2011-09-09 169 views
1

我有一個名爲showchild(pgid)的JavaScript函數。我已經在文檔準備上調用函數...setInterval無法訪問變量?

$(document).ready(function() 
{ 
    var pgid = $('#hiddenuserkey').val(); 
    //alert(pgid); 
    showchild(pgid); 
    setInterval("showchild(pgid)",1000); 
}); 
+3

這是因爲'pgid'是'ready'處理程序的* local *,但字符串'「showchild(pgid)」'在* global *範圍內計算。 *這就是爲什麼*你不應該傳遞一個字符串到'setXXXXXX'。 –

+1

這是一個答案,而不是評論。 ;) – ThiefMaster

+0

-1對於「不工作」。請確保包含適當的診斷信息(將來)。 – 2011-09-09 07:49:16

回答

7

您正在以最糟糕的方式使用它 - 傳遞一個字符串。

使用下面的代碼來代替:

setInterval(function() { 
    showchild(pgid); 
}, 1000); 

當傳遞一個字符串,它會在全球範圍內進行評估,而不必訪問任何非全局變量。通過傳遞函數(首選方法),所有可訪問的變量都保留在函數的閉包中,所以pgid在函數被調用時被定義。