通过超时启动间隔

时间:2016-01-16 16:38:02

标签: jquery settimeout setinterval clearinterval cleartimeout

我有一段最初开始间隔的代码。然后按下一个按钮,我希望停止/清除该间隔,等待X秒,然后再次开始间隔。

此代码启动间隔并正常工作:

var timeout = undefined;
var interval = setInterval(bgScroll, timeBetweenSwap);

然后我希望在单击按钮时停止间隔,让它等待X秒并再次启动(当然再次按下该按钮应重置该秒数)

$(document).on('click', '.bgscroller a', function(){
    clearInterval(interval);
    clearTimeout(timeout);

    var timeout = setTimeout(function(){
        var interval = setInterval(bgScroll, timeBetweenSwap);
    }, delayAfterClick);
});

现在当我点击按钮几次时间间隔变得疯狂并且堆积起来。我建议将其清除......任何建议哦我应该如何解决这个问题?

亲切的问候, 纳拉

1 个答案:

答案 0 :(得分:2)

简而言之,删除最后两个var语句。设为timeout =interval =,而不是var timeout =var interval =

您的代码非常接近 - 看起来您在最后几行timeoutinterval变量shadowing

这有点不对:

var timeout = setTimeout(function(){
    var interval = setInterval(bgScroll, timeBetweenSwap);
}, delayAfterClick);

应该看起来像这样(非常相似):

timeout = setTimeout(function(){
    interval = setInterval(bgScroll, timeBetweenSwap);
}, delayAfterClick);

请注意,我们删除了var语句。这使用与上面相同的timeoutinterval变量,而不是使新变量碰巧具有相同的名称。