【发布时间】:2017-03-11 23:24:42
【问题描述】:
我正在尝试创建一个计时器,它每秒都会调用另一个函数。所以我在 for 循环中使用 setInterval。
在 for 循环的第一个循环中跳过了 setInterval。 不知道为什么。
另外, 当间隔低于零时,我有清除间隔的功能。当我在停止条件下打印消息时,会输出但会跳过 clearInterval。
function changesystem(lottery, maxroundtime, firstloop) {
//loop through lottery numbers
for (var keys in lottery) {
var currentnum = lottery[keys].LotteryNum;
console.log(currentnum);
var currentclass = lottery[keys].ClassID;
//console.log(currentclass);
//display values
$('#CurrentNumber').text(currentnum);
$('#CurrentClass').text(currentclass);
//change progress bar
//every second until reaches max round time
// var loopcontrol = maxroundtime;
var loopcontrol = 5;
var timerloop = setInterval(function() {
console.log(loopcontrol);
//changetime(maxroundtime,firstloop);
loopcontrol--;
//firstloop=1;
}, 1000);
if (loopcontrol < 0) {
clearInterval(timerloop);
}
}
【问题讨论】:
-
你的 var
timerloop被你的 for 循环的每次迭代破坏 -
缩进也被破坏了...
-
我想你可能会认为
setInterval会以某种方式等待几秒钟过去,但事实并非如此,for循环将立即遍历所有迭代,并创建了同样多的 @987654326 @计时器,它们都开始滴答作响,并将永远如此。clearInterval代码永远不会被执行。
标签: javascript jquery setinterval clearinterval