2010-10-13 28 views
3

因此,我正在製作一個簡單的時鐘,它只是從靜態起點開始計算時間。問題是,當第二個標記點擊8時,它重置爲0.我不明白爲什麼。幫幫我!我的時鐘永遠不會超過8秒

這裏的時鐘:http://jsfiddle.net/Ender/jMbem/

下面是它的代碼:

HTML:

<h1>Mark's Busted Computer Clock</h1> 
<div id="time"> 
    <span id="hour">146</span>:<span id="minute">45</span>:<span id="second">00</span> 
</div> 

JS:

$(function() { 
    setInterval(UpdateSecond, 1000); 
}); 

function UpdateSecond() { 
    var num = parseInt($('#second').text()); 
    num++; 
    if (num == 60) { 
     num = 0; 
     UpdateMinute(); 
    } 
    if (num < 10) { 
     num = "0" + num; 
    } 
    $('#second').text(num); 
} 

function UpdateMinute() { 
    var num = parseInt($('#minute').text()); 
    num++; 
    if (num == 60) { 
     num = 0; 
     UpdateHour(); 
    } 
    if (num < 10) { 
     num = "0" + num; 
    } 
    $('#minute').text(num); 
} 

function UpdateHour() { 
    $('#hour').text(parseInt($('#hour').text()) + 1); 
} 
+2

順便說一句,你不能依賴於被調用的間隔功能正是每1秒。它會逐漸失去時間,並且如果瀏覽器被一些緩慢的腳本或插件阻止,很快就會失去時間。你通常應該從'new Date()。getTime()'中存儲一個'begin'時間,然後在每個間隔調用中查看'(new Date().getTime() - begin)/ 1000'來計算出多少秒自從時鐘開始以來已經過去了。 – bobince 2010-10-13 17:40:07

回答

8

的問題是,你不及格一個基數到parseInt函數。嘗試:

var num = parseInt($('#minute').text(), 10); 

此處瞭解詳情:http://www.w3schools.com/jsref/jsref_parseint.asp

+1

+1指出那些令人討厭的小「陷阱」之一... – 2010-10-13 17:23:33

+2

任何時候神祕的事情發生在8周圍,想想parseInt。 :) – DGM 2010-10-13 17:24:33

+0

太棒了!良好的發現,我不知道這是必要的。一旦我被允許接受,這將是公認的答案:) – Ender 2010-10-13 17:26:59