2012-10-30 53 views
1

我正在分配包含鏈接在頁面上的編號的onclicks。這是我的代碼:如何停止在JavaScript中通過引用傳遞for循環中的變量

var aTags = document.getElementsByTagName("a"); 

for (var t = 0; t < aTags.length; t++){ 

    var aTag = aTags[t]; 

    aTag.onclick = function(){setSubMenu(t);}; 


} 


function setSubMenu(t){ 

    console.log("t: " + t); 
    //The issue is t is always evaluating to the length of aTags 
    //instead of the current tag. 

} 

如何解決此問題?

回答

3

包裝在一個自執行關閉:

for (var t = 0; t < aTags.length; t++)(function(t) { 

    var aTag = aTags[t]; 

    aTag.onclick = function() { setSubMenu(t); }; 

})(t); 
+0

這工作,謝謝!如果有什麼清潔劑沒有出現,將它標記爲答案。 – joe

+1

這很乾淨,我很確定唯一的方法。你希望你的t在內部'function'對象被創建時被評估,而不是被執行。 – darksky

相關問題