我正在倒数计时器。当我取出setInterval()函数并在不暂停的情况下递减时间时,程序正常工作。setInterval定时器功能不工作
但是,当我使用setInterval()函数来调用每秒只减少我的时间的代码时,程序挂起。
function timeControl() {
var minutesLeft = $('#minutes').text();
var secondsLeft = $('#seconds').text();
while(Number(minutesLeft) > 0 || Number(secondsLeft) > 0) {
window.setInterval(decreaseTime, 1000);
minutesLeft = $('#minutes').text();
secondsLeft = $('#seconds').text();
}
}
function decreaseTime() {
var secondsLeft = $('#seconds').text();
var minutesLeft = $('#minutes').text();
if((Number(minutesLeft) > 0) && (Number(secondsLeft) == 0)) {
$('#minutes').text(Number(minutesLeft) - 1);
$('#seconds').text(4);
} else {
$('#seconds').text(Number(secondsLeft) - 1);
}
}
''setInterval'是异步的,所以你的代码没有更新元素,所以你有一个无限循环。 –
这不是你应该如何使用'setInterval()'。不要有一个'while'循环,它依赖于预定的东西,它永远不会终止。 –
[为什么setInterval会造成无限循环](https://stackoverflow.com/questions/37200897/why-is-setinterval-making-infinite-loops) –