2012-06-15 55 views
0

我正在尋找一個計時器放在我的網站上,計時器將被設置爲一個小時,並在它倒數到零後重新恢復到一個小時。它還需要具有通用性,因此它對所有用戶都是相同的,如果刷新頁面,則不會重置爲1小時。我猜這是相對簡單的,但是我能找到的是定時器,這些定時器計數到一定時間並停止,或者定時器在頁面刷新後不足以從零開始。通用的循環倒計時器爲一個網頁

如果有人可以幫忙,或者知道有這樣的鏈接,我會非常感激!

在此先感謝。

回答

2

爲什麼不只是獲得當前時間,只顯示分鐘數?否則,它不得不在服務器端完成。

2

你可以有計時器只顯示UTC的當前分鐘和秒的補充:

​setInterval(function() { 
    var d = new Date; 
    var s = (60 - d.getUTCMinutes()) + ":" + (60 - d.getUTCSeconds()); 
    $("#time").text(s); 
}, 250);​  

這裏有一個demo page在這裏你可以看到它的行動。

+0

你打我一個工作實現哈哈。唯一的問題是它會關閉用戶的系統時間,所以如果它關閉了,對所有的用戶來說都不會是正確的。 – Brendan

+0

謝謝!這實際上是我想我需要的東西。這將循環回到零後的原始時間嗎? (對不起,我對JavaScript不太滿意)。另外我將如何更改初始啓動時間? 謝謝 – user1386254

+0

你不能,它使用系統時鐘來計數。所以是的,它會循環;但你不能選擇初始條件。 – Brendan

0

你可以使用ajax來達到這個目的。在服務器上建立數據庫約60分鐘,然後用ajax請求更新客戶端的時間,這比客戶端腳本更安全。

0

如果你想要一個定時器每秒鐘滴答,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 methodsgetUTCHoursgetUTCMinutesgetUTCSeconds

3

這是我知道這將有助於的一個條件。

ctsecs--; 
if(ctsecs < 0) { 
    if(ctmnts > 0) { 
     ctsecs = 59; 
     ctmnts--; 
     if(cthrs > 0) { 
      ctmnts = 59; 
      cthrs--; 
     } else { 
      ctsecs = 0; 
      ctmnts = 0; 
      cthrs = 0; 
     } 
    } 
}