【问题标题】:Start interval through timeout通过超时开始间隔
【发布时间】:2016-01-16 16:38:01
【问题描述】:

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

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

亲切的问候, 纳拉扬

【问题讨论】:

    标签: jquery settimeout setinterval clearinterval cleartimeout


    【解决方案1】:

    简而言之,删除最后两个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 变量,而不是创建恰好具有相同名称的新变量。

    【讨论】:

    • 1+ 提到阴影
    • 非常感谢埃文..!你不知道我在寻找答案上浪费了多少时间:(
    猜你喜欢
    • 1970-01-01
    • 2020-12-31
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多