我已經做了一個計時器從this問題得分最高的答案。 問題是,當它到達0時,它會將日期更改爲第二天,並啓動新的24小時定時器。防止溢出JS計時器
T1; dr 00:00:00 - > 23:59:59而不是永遠保持00:00:00。
我當前的代碼:
function getTimeLeft() {
var seconds_left = end_time - Math.floor(Date.now()/1000);
var time_left = new Date(seconds_left * 1000).toISOString().substr(11, 8);
$('#test-time-left').text(time_left);
}
setInterval(getTimeLeft, 1000);
爲了讓00:00:00,我想到了解決它的2種方式。
一(恕我直言更好)將在while
循環給setInterval(getTimeLeft, 1000);
與條件seconds_left >= 0
。但我沒有什麼問題。
我不知道如何傳遞函數外的變量。
我不知道是否阻止setInterval會做任何事情,但我可能只是將間隔設置爲0(ergo將其關閉)。
第二種辦法簡單地做while
的函數內部:
while(seconds_left >= 0){
var time_left = new Date(seconds_left * 1000).toISOString().substr(11, 8);
}
問題:
- 浪費資源,因爲JS腳本仍然是正在做
@編輯最終結果:
function getTimeLeft() {
var seconds_left = end_time - Math.floor(Date.now()/1000);
if (seconds_left <= 0)
{
seconds_left = 0;
clearInterval(timer);
}
var time_left = new Date(seconds_left * 1000).toISOString().substr(11, 8);
$('#test-time-left').text(time_left);
}
var timer = setInterval(getTimeLeft, 1000);
我還將seconds_left設置爲0,以防腳本錯過0秒幀(例如用戶在倒計時發生時關閉瀏覽器)。
是否等值和平等類型是必需的?我想用<=來代替那個。以防萬一用戶關閉瀏覽器和JavaScript不運行,它會錯過第二幀。請參閱主文章中的編輯 – Kappa
如果用戶關閉瀏覽器,時間間隔將自動取消。應該可以使用'<='而不是'==='。 –
時間間隔,但日期更改,但無論如何,一切工作正常。謝謝。 – Kappa