setInterval()中的函数无延迟地执行

时间:2011-10-22 08:17:14

标签: javascript jquery setinterval

我正在制作一个jquery应用程序,通过使用setInterval()在指定的时间间隔后隐藏图像。问题是隐藏图像功能立即执行而没有延迟。

$(document).ready(function() {

  setInterval(change(), 99999999);

  function change() {
    $('#slideshow img').eq(0).removeClass('show');

  }

});

我正在jsfiddle进行测试。

4 个答案:

答案 0 :(得分:10)

http://jsfiddle.net/wWHux/3/

您立即调用了该函数,而不是将其传递给setInterval

setInterval( change, 1500 ) - 将函数change传递给setInterval

setInterval( change(), 1500 ) - 调用函数change并将结果(undefined)传递给setInterval

答案 1 :(得分:4)

如果你有setInterval(change(), 99999999);,你最终会立即调用change()函数并将其返回值传递给setInterval()函数。您需要通过将其包装在函数中来延迟执行change()

setInterval(function() { change() }, 9999999);

或者你可以通过传递setInterval()函数本身而不调用它来延迟它。

setInterval(change, 9999999);

要么有效。我个人发现第一个关于意图比第二个更清楚。

答案 2 :(得分:1)

您有setInterval(change(), 99999999);,它应该是setInterval(change, 99999999);。请参阅setInterval / setTimeout文档。 :)

常见的错误,一直发生在我身上。 :)

答案 3 :(得分:1)

setInterval(change(), 99999999);更改为setInterval(change, 99999999);

如您所知,99999999表示99999999毫秒。