帮助JS setInterval,它有时会发疯!

时间:2011-03-15 04:42:19

标签: javascript jquery setinterval

嘿伙计们。我在编写有关setInterval的脚本时遇到了一些麻烦。它有时会变得疯狂,甚至在间隔时间到来之前就会重复开始。

基本上我有这个滑块,我想让它每隔一段时间自动滑动,这就是我的脚本,但就像我说的那样疯狂了一点点。我做错了什么?

var current = 1;
function autoAdvance()
{
    if(current === -1) { return false; }

    jQuery('#slide_menu ul li a').eq(current%jQuery('#slide_menu ul li a').length).trigger('click',[true]); 
    current++;
}
var itvl = setInterval(function(){autoAdvance();},8000);

1 个答案:

答案 0 :(得分:3)

setInterval(与setTimeout一样)在超时到期时将回调函数添加到事件队列中 - 如果同时发生其他事件处理,则可能导致多个排队的回调。我更喜欢使用setTimeout并让回调函数调度另一个超时。这样,只有在前一个呼叫完成后,您才会安排下一个呼叫。

function callback(){
    setTimeout(callback,8000);
}
setTimeout(callback,8000);

哦,也没有必要在setInterval中的函数中包含autoAdvance。

setTimeout(autoAdvance,8000);