如何停止计时器循环延迟jQuery
问题描述:
我已经做了每10秒延迟的循环。我设定了一个定时器10秒。但它不会停止3循环后....任何想法?我做错了什么? 2循环后,我检查是否它的3d循环我清除间隔,但你可以看到它不能清除? 我做了什么至今:https://jsfiddle.net/56n720qm/2/如何停止计时器循环延迟jQuery
jQuery(document).ready(function() {
var i = 0;
var intervaltime;
var fiveMinutes = 10 * 1;
var display = document.querySelector('#timer');
function startTimer(duration, display) {
var timer = duration, minutes, seconds;
intervaltime = setInterval(function() {
minutes = parseInt(timer/60, 10)
seconds = parseInt(timer % 60, 10);
minutes = minutes < 10 ? "0" + minutes : minutes;
seconds = seconds < 10 ? "0" + seconds : seconds;
display.textContent = minutes + ":" + seconds;
if (--timer < 0) {
timer = duration;
}
}, 1000);
}
function stopINT(){
clearInterval(intervaltime);
}
function myLoop() {
if(i > 0){time = 10000;}else{time=0;} //every 10 s.
setTimeout(function() {
//postFB(i);
//alert(i);
i++;
if(i == 3){
stopINT();
}
if (i <= 2) {
startTimer(fiveMinutes, display);
myLoop();
}
}, time)
}
myLoop();
});
答
你开始不清除的第一个新的区间,所以在一个点上多个间隔在同一时间运行。
在这里添加行clearInterval(intervaltime);
来解决你的问题。
if (i <= 2) {
clearInterval(intervaltime);
startTimer(fiveMinutes, display);
myLoop();
}
查询the fiddle out。
此外,您可能需要考虑将变化时间从10000
更改为11000
,以防止循环过快完成。
+0
谢谢错过了! :) – andys
+0
没问题,我的荣幸:) – TheOnlyError
这是滥用超时通话。你需要简化你的代码,你可能不需要任何循环。你想做什么? – fahadash