我在jquery / javascript倒计时遇到了一些问题,我希望你能帮助我。
所以,我有计时器功能,它有一个参数,叫做selector(jquery selector)..
function timer(selector) {
self = $(selector);
var sec = parseInt(self.find('span.timeout').text());
var interval = setInterval(function() {
sec--;
if (sec >= 0) {
self.find('span.timeout').text(sec);
} else {
setInterval(interval);
}
}, 1000);
}
in,html我有类似的东西。
<div class="element" id="el1"><span class="timeout">10</span></div>
<div class="element" id="el2"><span class="timeout">10</span></div>
具有相同类和不同ID的多个元素
并且该功能的用法如下:
$("body").on('click', '.element', function() {
timer(this);
});
在第一次点击它工作正常,计时器倒计时。 但是当我点击同一个班级的第二个div时,第一个计数器停止,第二个计数器从前一秒开始。
那么,如何在js / jquery的同一页面上进行多次倒计时,所以我可以点击这两个元素,两个计时器都能正常工作?
答案 0 :(得分:1)
self
声明var
。结果,self
成为全局变量。在创建第二个计时器时,您正在覆盖此全局(“共享”)变量。因此,两个计时器从那时起,同时输出到第二个元素,导致故障。clearInterval(interval)
。