我不明白为什么这个脚本会在每次点击“开始”时使计数器加速。我需要插入什么才能防止这种情况发生?
var count = 1;
var counting = function () {
timer = setInterval(function () {
$('#numbers').html(count);
count++;
}, 1000);
function counting() {};
}
$("#start").click(counting);
$('#stop').click(function () {
clearTimeout(timer);
});
$('#reset').click(function () {
count = 0;
$('#numbers').html(count);
});
答案 0 :(得分:3)
您需要将setInterval
与clearInterval
匹配,而不是clearTimeout
。
如果计时器已经启动,您还需要阻止对counting
的其他来电,例如在$('#start').prop('disabled', true)
内加counting
个电话。
或者,只需确保在致电clearInterval(timer)
timer = setInterval(...)
答案 1 :(得分:0)
这是因为每次点击“开始”时,它都会调用创建间隔的函数。再次调用setInterval函数不会停止前一个时间间隔。
快速解决方案是在clearInterval( timer )
之前致电setInterval(...)
,如下所示:
var timer;
var counting = function() {
clearInterval( timer );
timer = setInterval( function() {
$('#numbers').html( count );
count++;
}, 1000 );
}
请注意,我事先声明了timer
,因为第一次点击“开始”会产生类似timer is undefined
之类的错误。