2015-05-17 55 views
-2

我正在JavaScript中創建時鐘,但是當我使用增量運算符將秒數增加1時,值將增加* 2。JavaScript增量運算符不會增加1

var hours=0; 
var sec=0; 
var min=0; 

function clock(){ 

    document.getElementById("sec").innerHTML= ++sec; 
    if(sec>59){ 
     document.getElementById("min").innerHTML= ++min; 
     sec=0; 
    } else if(min>59){ 
     document.getElementById("hours").innerHTML = ++hours; 
     min=0; 
    } 
    else if(hours>12){ 
     hours=0; 
    } 
    setInterval(clock, 1000); 
} 
clock(); 
+0

Setinterval不精確,不要嘗試將它用於時鐘。 – Nit

+0

任何其他功能? – ProjectAb

+0

如果您不能使用其他函數,並且您不應該在使用setInterval調用的函數內部使用setInterval。 – epascarello

回答

2

你不應該使用else if。

你不應該在時鐘函數中使用setInterval。它應該是setTimeout。使用setInterval,意味着在每次迭代中,您正在添加另一個區間。

第三,setTimeout/setInterval不準確。您應該只使用開始日期並減去當前日期並確定時間差。

+0

var d = new Date(); \t var h = d.getHours(); \t var m = d.getMinutes(); \t var sec = d.getSeconds(); document.getElementById(「sec」)。innerHTML = h; document.getElementById(「min」)。innerHTML = m; \t document.getElementById(「hours」)。innerHTML = sec; – ProjectAb

+0

我已經改變了我的代碼,它現在正在工作,你能告訴我怎麼一次又一次地調用這個函數嗎? – ProjectAb