2011-07-10 158 views
-1

我有兩個JavaScript代碼。 兩個代碼適用於相同的工作,但有一個代碼工作,其他代碼不起作用。爲什麼相同的代碼工作,不能以另一種形式工作

工作

var i = 0; 
function slideShow(){ 
    i++; 
    document.getElementsByName('SearchBox')[0].value = i 
    setTimeout(slideShow, 1000); 
} 

不起作用

var i = 0; 
function slideShow(){ 
    setTimeout(function(){ 
     i++; 
     document.getElementsByName('SearchBox')[0].value = i 
    }, 1000); 
} 

爲什麼一個工程和其他不起作用

+2

。如果(舊==新){相同; } – sdolgy

+0

「不起作用」會導致任何錯誤消息嗎? –

+0

@Uwe Keim:沒有任何錯誤信息 –

回答

3

的第一個版本,調用時,做一些事情,然後套超時再次調用自己。

第二個版本在被調用時會設置執行某些代碼的超時時間。它確實不再呼叫自己

1

在第一個示例中,slideShow將自身傳遞給setTimeout,因此每次運行時,它都會自動設置爲在秒鐘過後再次運行。

在第二個例子中,這沒有發生。所以這個函數只運行一次。

1

它們在功能上不相同。

在第一個(工作)片段中,通過撥打slideShow()它確實是這樣,然後在1秒後安排另一個呼叫。

第二個版本只有安排一個呼叫匿名函數一次。因爲它們不是相同的,所以函數調用再次沒有被預定

相關問題