2013-03-17 59 views
0

我正在尝试使用for循环为下面的每个4个链接生成onclick函数。现在它根本不起作用,我不确定为什么?使用Variable&Loop创建“onclick”函数

小提琴:http://jsfiddle.net/7WYfF/

<p><a href="#" id="link0">Link0</a></p> 
<p><a href="#" id="link1">Link1</a></p> 
<p><a href="#" id="link2">Link2</a></p> 
<p><a href="#" id="link3">Link3</a></p> 

<script> 
for (var i = 0; i < 3; i++) { 
    var temp = "link" + i; 

    [temp].onclick = function() { 
     alert("You just clicked link: " + i); 
    }; 
} 
</script> 

回答

3

两件事情。首先,您需要将i包装在闭包中以存储所需的值。第二个[temp]不会选择一个DOM元素,您需要以不同的方式做。

for (var i = 0; i < 3; i++) { 
    var temp = "link" + i; 

    document.getElementById(temp).onclick = (function(t) { 
     return function (e) { 
      alert("You just clicked link: " + t); 
     }; 
    })(i); 
} 
0

尝试......

变种临时=的document.getElementById( “链接” + I);

temp.onclick =功能...

0

你应该使用的getElementById:

document.getElementById("link" + i); 

也建议你使用jQuery框架。它比纯JavaScript更容易。