考慮的JavaScript的這個小片斷:如何解決Javascript關閉問題?
for(var i in map.maps)
{
buttons.push($("<button>").html(i).click(function() { alert(i); }));
}
它創建用於每個在map.maps
對象中的字段中的一個按鈕(這是一個ASSOC數組)。我將索引設置爲按鈕的文本,並將其設置爲提醒索引。很顯然,人們會希望所有按鈕在單擊時都會提醒它自己的文本,但是當單擊時,所有按鈕都會提醒map.maps
對象中最終索引的文本。
我認爲這種行爲是由整潔的方式引起的,JavaScript處理關閉,返回並從創建它們的閉包執行函數。
我可以想象得到解決這個問題的唯一方法是將索引設置爲按鈕對象上的數據,並從點擊回調中使用它。我也可以模仿我的buttons
對象中的map.maps
索引,並使用indexOf
找到正確的點擊索引,但我更喜歡前一種方法。
我在尋找的答案是確認,我正在做它正確的方式,或建議如何我應做到這一點。
[我如何將JS變量的值(不是引用)傳遞給函數]幾乎完全重複?(http://stackoverflow.com/questions/2568966/how-do-i-pass-the -value-not-the-reference-of-js-variable-to-a-function) – 2011-06-06 09:04:35