2010-07-24 123 views
2

我有一個問題,setTimeout ..我不知道爲什麼,這是不行的..setTimeout的問題

$(document).ready(function(){ 
var counterNum = 0; 

function tick() 
{   
    addText(counterNum); 
    setTimeout('tick()',1000); 
    counterNum++; 
} 

function addText(strNum) 
{ 
$("div.counter").empty(); 
$("div.counter").append(strNum);   
} 
});​ 

,你可以在這裏檢查它的實時預覽LINK

也先生,這是

setTimeout('tick()',1000); 

setTimeout(tick(),1000); 
之間的區別

回答

4

嘗試:

$(document).ready(function(){ 
var counterNum = 0; 

function tick() 
{   
    addText(counterNum); 
    setTimeout(tick,1000); 
    counterNum++; 
} 

function addText(strNum) 
{ 
$("div.counter").empty(); 
$("div.counter").append(strNum+""); 

} 

tick(); 

});

setTimeout('tick()',1000) 

setTimeout(tick(), 1000) 

之間的區別是,第二個將不等待1000毫秒執行,但如果你把它改成

setTimeout(tick, 1000) 

這將是實際上是一樣的。從技術上講,它會改變函數的調用範圍。

1

在傳遞字符串的情況下JavaScript必須評估它以運行您的代碼。隨着setTimeout的你應該總是用這樣的模式:

var self = this; 
setTimeout(function(){tick();},1000); 

這給你關閉,並允許你繞過一個事實,即使用setTimeout的變化這是什麼是全局對象窗口(開發商nastly小驚喜他們第一次遇到它)。

嘗試與Fredrik推薦的組合,你應該狀態良好。