2011-11-22 42 views
2

我把這些代碼放在html的HEAD部分,但是不能正常運行,
有什麼問題嗎?一個js定時器不能正確運行

顯然它是一個計時器,但它不會運行一次。
我沒有忘記鏈接jQuery。

非常感謝。

<script type="text/javascript"> 
$(function(){ 
    function something(){ 
     alert("something happened"); 
    } 

    var timer=function(){ 
     something(); 
     setTimeout(timer,900); 
    }; 

    timer; 
} 
); 
</script> 
+1

如果你想每900毫秒調用'something',你應該使用'setInterval'而不是'setTimeout':'setInterval(something,900)'。 – davidchambers

回答

7

你的外部匿名函數運行onready,但它只是定義了兩個函數,然後有一個無用timer表達式,你必須真正通話功能:timer()

如果你想正確地做到這一點,你應該完全擺脫timer函數,因爲你似乎試圖模擬setInterval

$(function(){ 
    function something(){ 
     alert("something happened"); 
    } 

    setInterval(something, 900); 
}); 
+0

但爲什麼在這裏「setInterval(something,900);」可以工作,爲什麼不「setInterval(」something()「,900);」? –

+0

也許是因爲你必須使用'timer()'而不是'timer'來調用你的計時器。 – lya

+0

@namiheike - 您可以傳遞setInterval函數或字符串以「評估」。後面的選項會打破範圍,很慢並且很難調試。傳遞函數是更好的選擇。 – Quentin