我正在尋找一個計時器放在我的網站上,計時器將被設置爲一個小時,並在它倒數到零後重新恢復到一個小時。它還需要具有通用性,因此它對所有用戶都是相同的,如果刷新頁面,則不會重置爲1小時。我猜這是相對簡單的,但是我能找到的是定時器,這些定時器計數到一定時間並停止,或者定時器在頁面刷新後不足以從零開始。通用的循環倒計時器爲一個網頁
如果有人可以幫忙,或者知道有這樣的鏈接,我會非常感激!
在此先感謝。
我正在尋找一個計時器放在我的網站上,計時器將被設置爲一個小時,並在它倒數到零後重新恢復到一個小時。它還需要具有通用性,因此它對所有用戶都是相同的,如果刷新頁面,則不會重置爲1小時。我猜這是相對簡單的,但是我能找到的是定時器,這些定時器計數到一定時間並停止,或者定時器在頁面刷新後不足以從零開始。通用的循環倒計時器爲一個網頁
如果有人可以幫忙,或者知道有這樣的鏈接,我會非常感激!
在此先感謝。
爲什麼不只是獲得當前時間,只顯示分鐘數?否則,它不得不在服務器端完成。
你可以有計時器只顯示UTC的當前分鐘和秒的補充:
setInterval(function() {
var d = new Date;
var s = (60 - d.getUTCMinutes()) + ":" + (60 - d.getUTCSeconds());
$("#time").text(s);
}, 250);
這裏有一個demo page在這裏你可以看到它的行動。
你可以使用ajax來達到這個目的。在服務器上建立數據庫約60分鐘,然後用ajax請求更新客戶端的時間,這比客戶端腳本更安全。
如果你想要一個定時器每秒鐘滴答,setInterval是一個不好的選擇。它只能在請求的時間間隔內運行,並且會緩慢漂移。除非經常打電話,否則使用它的時鐘將不會流暢,這很浪費。
一個更好的策略是使用setTimeout按順序調用自己,根據到下一個tick的時間加上一個小數來設置延遲。例如一個非常簡單的時鐘:
<script>
function addZ(n) {
return (n<10? '0' : '') + n;
}
function update() {
var d = new Date();
// Set lag to 20ms after next full second
var lag = 1020 - d.getMilliseconds();
document.getElementById('d0').innerHTML = addZ(d.getHours()) + ':' +
addZ(d.getMinutes()) + ':' + addZ(d.getSeconds());
setTimeout(update, lag);
}
window.onload = update;
</script>
<div id="d0"></div>
如果你很高興與使用系統時鐘爲您的櫃檯,你想讓所有人都看到了相同的數字(或多或少),您可以使用日期的UTC methods:getUTCHours
,getUTCMinutes
和getUTCSeconds
。
這是我知道這將有助於的一個條件。
ctsecs--;
if(ctsecs < 0) {
if(ctmnts > 0) {
ctsecs = 59;
ctmnts--;
if(cthrs > 0) {
ctmnts = 59;
cthrs--;
} else {
ctsecs = 0;
ctmnts = 0;
cthrs = 0;
}
}
}
你打我一個工作實現哈哈。唯一的問題是它會關閉用戶的系統時間,所以如果它關閉了,對所有的用戶來說都不會是正確的。 – Brendan
謝謝!這實際上是我想我需要的東西。這將循環回到零後的原始時間嗎? (對不起,我對JavaScript不太滿意)。另外我將如何更改初始啓動時間? 謝謝 – user1386254
你不能,它使用系統時鐘來計數。所以是的,它會循環;但你不能選擇初始條件。 – Brendan