我正在尝试建立一个在比赛时间和工作时间之间切换的倒计时。它以10秒的工作开始,然后当它达到0秒时我们清除间隔并将其设置为“播放”并再次调用该函数...
var model = {
intervalID: 0,
status: 'work',
workSeconds: 10,
playSeconds: 10,
}
function startCountdown(){
if (model.status === 'work') {
model.countdown = model.workSeconds;
model.intervalID = setInterval(function(){
model.countdown--;
if (model.countdown > 0) {
console.log('work', model.countdown);
} else {
model.status = 'play';
clearInterval(model.indervalId);
startCountdown();
}
}, 1000);
} else if (model.status === 'play') {
model.countdown = model.playSeconds;
model.intervalID = setInterval(function(){
model.countdown--;
if (model.countdown > 0) {
console.log('play', model.countdown);
} else {
model.status = 'work';
clearInterval(model.indervalId);
startCountdown();
}
}, 1000);
}
}
startCountdown();
此功能应该是控制台记录10秒倒计时工作,然后当倒计时达到0时切换到10秒倒计时,并继续这样做。
目前似乎没有清除任何间隔,并且两个间隔只是在反馈循环中保持相互设置。
为什么没有清除间隔?
答案 0 :(得分:2)
我认为你有一个错字。 clearInterval(model.indervalId);
应为clearInterval(model.intervalID);
。
我也会使用setTimeout
,但我猜你已经知道了。