Javascript 代码成倍增加,所有实例都在运行
我的网站的工作方式是,任何单击的链接都不会加载新页面,但会在名为“content”的div中触发.load()事件 一切都很好,但现在我遇到了一个小问题 在其中一个内容页上,我有以下代码:Javascript 代码成倍增加,所有实例都在运行,javascript,jquery,Javascript,Jquery,我的网站的工作方式是,任何单击的链接都不会加载新页面,但会在名为“content”的div中触发.load()事件 一切都很好,但现在我遇到了一个小问题 在其中一个内容页上,我有以下代码: $('.count').each(function () { $this = $(this); countdown = setInterval(function(){ countnow = parseInt($('.remain', $this)
$('.count').each(function () {
$this = $(this);
countdown = setInterval(function(){
countnow = parseInt($('.remain', $this).html());
$('.remain', $this).html(countnow-1);
}, 1000);
return false;
});
代码是有效的。。。它工作得很好。但当我再次加载同一个页面时,代码似乎运行了两次,因为秒数一次减少2。然后,当我再次加载它时,它一次下降3秒。再次加载,每次下降4秒。我再加载几次,它下降得比我能读的快
我尝试为.count div提供它们自己的唯一id(.remaine div嵌套在.count div中),即使在随后加载页面时,id仍然完全不同,这并没有解决我的问题。我还尝试将clearInterval(倒计时)放在函数的前面,但这只是使它完全停止工作。有什么建议吗
是的,我知道倒计时在达到0时不会停止。试试这个:
var countdown;
$('.count').each(function () {
$this = $(this);
if (!countdown)
countdown = setInterval(function(){
countnow = parseInt($('.remain', $this).html());
$('.remain', $this).html(countnow-1);
}, 1000);
return false;
});
如果不希望在加载页面片段时运行代码,请将其取出。这似乎是一个非常简单的问题。可能不相关,但使用
var
声明变量。现在你在全球范围内泄露它们,这是一件坏事。