此代碼旨在在您在文本輸入中鍵入內容時啟動計時器,該計時器將每秒計數,直到達到 5 秒,然后停止。但它不斷吐出,0這會while loop導致瀏覽器崩潰。我確定我在這里遺漏了一些明顯的東西:-/
var secondsPassed = 0;
function setTimer() {
while (secondsPassed <= 5) {
console.log(secondsPassed);
setInterval(function() { secondsPassed = 1; }, 1000);
}
}
<input type="text" onkeyup="setTimer()">
uj5u.com熱心網友回復:
您的while回圈永遠不會停止,因為它的條件 ( secondsPassed <= 5) 永遠不會評估為真,因為setInterval它不是同步的。
您應該改為將條件移動到setInterval.
var secondsPassed = 0;
function setTimer() {
var interval = setInterval(function() {
if ( secondsPassed == 5) clearInterval(interval);
console.log(secondsPassed)
}, 1000);
}
<input type="text" onkeyup="setTimer()">
uj5u.com熱心網友回復:
這是設定間隔和計數時間的錯誤方法。
我推薦以下內容:
var secondsPassed = 0, timerOn = false;
function setTimer(){
if(timerOn) return;
var t0 = Date.now();
timerOn = true;
var intervalId = setInterval(
function(){
secondsPassed = Math.round((Date.now()-t0)/1000);
console.log(secondsPassed)
if(secondsPassed >= 10){
clearInterval(intervalId);
timerOn = false;
}
}, 1000
);
}
<input type="text" onkeyup="setTimer()">
我在 10 秒后停止了計時器,以防有人想測驗它,但當然,否則你必須停止它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/361533.html
標籤:javascript 设置间隔
上一篇:如何回傳具有給定值的物件?
