我想用JavaScript構建一個計時器。這裏是我的功能:帶遞歸時間事件的JavaScript遞歸(setTimeout)
var t;
function time(num){
var buf = num;
document.getElementById("test").innerHTML=buf;
buf++;
alert(buf + " " + num); //For troubleshooting
t=setTimeout("time(buf)",1000);
}
如果我運行時間(0),ID =「test」的零件沒有任何反應。 num總是等於0和buf每次函數被調用時總是等於1(來自警報函數)。
我對Java和C很滿意,而且我知道這會適用於這些語言。我知道JavaScript也是一種傳值語言,爲什麼這個計時器不工作?
而且,爲什麼沒有發生,當我試圖(和改變了所有的BUF到NUM)
t=setTimeout("time(num)",1000);
我知道有其他的方法來創建一個計時器,但我想知道爲什麼此方法不起作用。謝謝。
你可能認爲這是遞歸,但它實際上不是。 'time()'被調用,然後調用'setTimeout()'並傳遞稍後將被執行的字符串。然後,'time()'返回,一段時間後,'time()'被計時器代碼再次調用。這不是技術上的遞歸。第一次調用'time()'在第二次調用之前已經完成。你只是在安排第二次電話會在未來一段時間。 – jfriend00 2012-01-02 06:41:20