2012-10-30 51 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

相关问题