我正在倒數計時器。當我取出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) –