2016-01-16 105 views
0

我有这段代码,最初开始间隔。然后按下按钮,我希望停止/清除该间隔,等待X秒钟,然后再次开始间隔。通过超时启动间隔

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

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

然后我想的时间间隔停止当我点击该按钮,让它等待X秒,再次启动(ofcourse再次按下按钮应该重置秒的量)

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

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

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

亲切的问候, 纳拉扬

回答

2

总之,除去最后两个var声明。使它timeout =interval =而不是var timeout =var interval =

您的代码非常接近 - 它看起来像是最后几行中的shadowingtimeoutinterval变量。

这是说的不对位:

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

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

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

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

+1

1+对于提及阴影 –

+0

非常感谢你埃文..!你不知道我浪费了多少时间来寻找答案:( – Narayan