通过超时开始间隔

Start interval through timeout

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

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

亲切的问候, 纳拉扬

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

您的代码非常接近——看起来您是 shadowing 最后几行的 timeoutinterval 变量。

这是错误的地方:

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

应该是这样的(非常相似):

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

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