0

我有以下函数,我想在连续循环上运行,我认为这对我有用,但不是这样,因为该函数只运行一次。我不确定问题出在方法、间隔还是我的代码上。我对此很陌生。

var c = $(".test p").length;    
setInterval(faderepeat(c),20000);

function faderepeat(c){     
  var i = 0;
  while (i<=c) {
var p = $(".para");
($(p[i]).delay(i*3000).fadeIn(2000).fadeOut(1000));
  i++;
    }
}
4

3 回答 3

1

将您的 setInterval 调用更改为:

setInterval( function() { faderepeat(c); }, 20000);

您调用它的方式,函数运行一次,setInterval 重复调用函数的结果。

于 2013-08-18T03:53:35.730 回答
1
setInterval( function() { faderepeat(c); }, 20000); // this will fix your looping issue
function faderepeat(c){     
    var i = 0;
    while (i<=c) {
        var p = $(".para");
        ($(p[i]).delay(i*3000).fadeIn(2000,function() {
            $(this).fadeOut(1000)); // using the callback version of this method is much cleaner
        });
        i++;
    }
}
于 2013-08-18T03:54:12.297 回答
0

问题可能是这一行:

setInterval(faderepeat(c),20000);

你不能以这种方式将参数传递给回调函数,试试这个:

setInterval(faderepeat,20000);

function faderepeat(){  
  var c = $(".test p").length;    
  var i = 0;
  while (i<=c) {
var p = $(".para");
($(p[i]).delay(i*3000).fadeIn(2000).fadeOut(1000));
  i++;
    }
}

移入var c =$(".test p").lengthfaderepeat始终获取最新值

于 2013-08-18T03:52:36.167 回答