2011-10-12 237 views
1

這不是我第一次使用setTimeout(),但我無法弄清楚問題是什麼。 setTimeout()的代碼部分正確執行,但是它沒有延遲就立即執行。如果有人能看到這個問題,那會有幫助。代碼如下:Javascript setTimeout忽略時間參數

if(token==1){ 
    img1.src=ssImages[imgNum]; 
    num1=0; 
    num2=10; 
    setTimeout('crossFade()',2500); 
} 
+0

您正在調用一個函數而不是一個字符串? '的setTimeout( crossFade,2500);' –

+0

@Igor Dymov:不,那不是同一個問題。 – Guffa

+1

請創建一個http://jsfiddle.net/演示,因爲超時本身[工作得很好](http://jsfiddle.net/JAU2Z/)。 –

回答

4

您確定這是代碼?如果立即執行,通常有兩個原因:

  1. 開發人員認爲時間是以秒爲單位指定的 - 但2500是好的,這是2.5秒。
  2. 他立即調用函數(例如setTimeout(foo(), 1234));

但是,沒有一個原因適用於您的代碼,因此如果有任何其他調用該函數,請檢查其餘代碼。


無論如何,你應該傳遞一個函數,而不是一個字符串:

setTimeout(crossFade, 2500); 

或者,如果你需要指定任何參數:

setTimeout(function() { 
    crossFade(...); 
}, 2500); 
+0

@ratSawGod:究竟哪一個信息不應該進一步傳播?任何ThiefMaster所說的都是100%正確的。 *「不起作用」*不是有用的錯誤描述。我們只能用你給我們的東西來工作,到目前爲止,你只給了我們這一行'setTimeout('crossFade()',2500);',它完美地工作。創建一個更完整的示例來演示您的問題。請不要粗魯。其他人正在花費寶貴的時間來幫助你*。 –

0

我Theifmaster同意。窗戶。 setTimeout的方法有兩個參數:

1)功能或表達 2)時間(ms)

在你的代碼提供一個字符串或表達式:

的setTimeout( '交叉淡入淡出()',.. ..)

這通常不鼓勵使用eval。你應該通過一個功能 - 無論是命名爲:

的setTimeout(淡入淡出,....)

OR的建議匿名:

的setTimeout(函數(){交叉淡入淡出()} ....

這是所有你能做的麻煩,除非你提供一個例子確定的jsfiddle拍這個代碼,看看這個被稱爲上下文。