0

我有这段代码最初开始一个间隔。然后按一下按钮,我希望停止/清除该间隔,等待 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);
});

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

亲切的问候,纳拉扬

4

1 回答 1

2

简而言之,删除最后两个var语句。做它timeout =andinterval =而不是var timeout =and var interval =

您的代码非常接近——看起来您在最后几行隐藏timeoutandinterval变量。

这是错误的一点:

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

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

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

请注意,我们删除了这些var语句。这使用与上面相同的timeout变量interval,而不是创建恰好具有相同名称的新变量。

于 2016-01-16T16:45:23.840 回答