2011-11-29 47 views
0

即時通訊只是不知道如何得到這個函數內的期望值謝謝!JavaScript的命名空間問題,我如何得到這個函數內的值這個函數調用

temp = exotics[i].split(','); 

if ($.inArray(temp[0], tblProbables) != -1) { 
    item = $("<li><a id='" + temp[0] + "'" + "href='#' >" + temp[1] + "</a></li>"); 
    item.click(function() { GetProbable(temp[0]); }); 
} 

溫度[0]是空的,因爲它沒有該功能空間內,存在....所以我怎麼能設置點擊事件,以便它調用適當的PARAM功能?

回答

3

我有一種感覺你以某種方式重新使用temp變量。

如果是這樣,您可以在函數中創建一個新的變量作用域,該函數返回一個引用適當作用域變量的函數。

function createHandler(temp) { 
    return function() { GetProbable(temp); }; 
} 

item.click(createHandler(temp[0])); 
+1

非常感謝...我很難過,我沒有想到:P – Zholen

1

存儲在臨時變量的值:如果該temp0 varible變化多次(例如在一個循環中)

.... 
    var temp0 = temp[0]; 
    item.click(function() { GetProbable(temp0); }); 

,創建一個閉包:

(function(temp0){ //Inside this function, it doesn't matter if `temp` changes 
     item.click(function() { GetProbable(temp0); }); 
    })(temp[0]); 
+0

是沒有辦法,我可以設置此,以便它不自動調用最後一個函數的方法嗎?我希望在點擊時調用GetProbable函數......不立即調用 – Zholen

+0

@Zholen我建議的代碼(最後一行)綁定一個閉包中的onclick處理程序。它與你當前的代碼完全相同,除了'temp [0]'的修復。 –

+0

哦,我完全錯過了,我一直在想,關閉是在點擊。 – Zholen

相關問題