Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为自动淡入和淡出选择随机div_Javascript_Jquery_Html_Random_Fade - Fatal编程技术网

Javascript 为自动淡入和淡出选择随机div

Javascript 为自动淡入和淡出选择随机div,javascript,jquery,html,random,fade,Javascript,Jquery,Html,Random,Fade,目前,该代码是自动淡入淡出div,方法是按排列方式(连续顺序)选择div元素。我现在想做的是使选择器随机,我想在一个随机div中淡出,淡出后,它将选择另一个随机div并无限循环这个过程。因为我是jQuery新手,所以很困惑,我也想知道您对如何以最简单的方式将这个过程放到If-Else语句中的看法。例如,我将得到一个数字的值 int num = 1; If(num == 1){ <!-- Do the process--> } Else { <!-- Do another pro

目前,该代码是自动淡入淡出div,方法是按排列方式(连续顺序)选择div元素。我现在想做的是使选择器随机,我想在一个随机div中淡出,淡出后,它将选择另一个随机div并无限循环这个过程。因为我是jQuery新手,所以很困惑,我也想知道您对如何以最简单的方式将这个过程放到If-Else语句中的看法。例如,我将得到一个数字的值

int num = 1;
If(num == 1){
<!-- Do the process-->
}
Else {
<!-- Do another process by selecting from another set of divs-->
}
分区:


1-----------一
二-----------二
三-----------三

尝试将nextOrFirst函数更改为类似以下内容:

   jQuery.fn.nextOrFirst = function (selector) {
    var xCount = selector.size();   
    return  Math.floor(Math.random() * xCount ) + 1;
}
不是得到第一个div的下一个,而是得到所有div的计数,
图片是一个介于1和X之间的随机数(使用选择器的div数)

试试这样的方法,希望能有所帮助

     var c=$(".boxes div");
     setInterval(function(){

     $.each(c,function(a,z){
          $("div[class='"+(z.className)+"'").fadeIn();
     });

      var item = c[Math.floor(Math.random()*c.length)];
      var u=item.className;

      $("."+u).fadeOut();
      $("div[class='"+u+"'").fadeOut(1000);

   }, 3000);
编辑:

var c=$(".boxes div");
 setInterval(function(){
 $.each(c,function(a,z){
    $("div[class='"+(z.className)+"'").hide();
 });
 var item = c[Math.floor(Math.random()*c.length)];
 var u=item.className;
 $("."+u).fadeOut();
 $("div[class='"+u+"'").show().fadeIn(1000);

 }, 2000);

小提琴链接:

不确定这是否正是您想要的,但可以修改:

var mb = $('.mb'),   
mbl = mb.length;

mb.hide();
rand();

function rand(){
  var r = getRand(0, mbl);

  mb.eq(r).fadeIn('slow', function(){
    $(this).fadeOut('slow', function(){
      setTimeout(rand, 200);
    });
  });
}


function getRand(min, max) {
    return Math.floor(Math.random() * (max - min) + min);
}

我理解你的观点,但它不能与上面的代码一起工作,你能在这里给我一个例子吗?它只显示1个div,不再显示了。有什么更新吗?这一个有效,但它显示了所有的div元素。如何一次只显示一个div?在下一个div淡入前设置一个间隔?@vnylng检查答案,我已经更新了它和fiddle链接。如果你发现任何答案有用,也给答案打分!当存在另一个div元素时,代码工作不正常,只需更改我以前代码的选择器可能会更好。我以前的代码工作正常,但我的问题是如何使选择器随机。你有什么想法吗,先生?@vnylng好的,我可以这样做,但是你能告诉我什么在我编辑的代码中不起作用吗,因为我在小提琴中添加了第四个div,它工作得很好。现在工作得很好。无论如何,我怎样才能为你的新更新添加间隔?我希望它淡入4秒钟,在显示下一个随机div之前再间隔4秒钟。嗨,Tom,每次我在JSFIDLE尝试这个方法时,它都可以正常工作,但当我将它传输到html文件时,它就不起作用了。我觉得很奇怪,或者我错过了什么。你能帮我吗?试着用$(document).ready(function(){})包装整个文档;我是jQuery新手,多亏了你,现在我知道我必须在它工作之前包装它。现在它运行平稳!
var c=$(".boxes div");
 setInterval(function(){
 $.each(c,function(a,z){
    $("div[class='"+(z.className)+"'").hide();
 });
 var item = c[Math.floor(Math.random()*c.length)];
 var u=item.className;
 $("."+u).fadeOut();
 $("div[class='"+u+"'").show().fadeIn(1000);

 }, 2000);
var mb = $('.mb'),   
mbl = mb.length;

mb.hide();
rand();

function rand(){
  var r = getRand(0, mbl);

  mb.eq(r).fadeIn('slow', function(){
    $(this).fadeOut('slow', function(){
      setTimeout(rand, 200);
    });
  });
}


function getRand(min, max) {
    return Math.floor(Math.random() * (max - min) + min);
}