我正在尝试使用for循环为下面的4个链接生成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>
答案 0 :(得分: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);
}
答案 1 :(得分:0)
试试这个......
var temp = document.getElementById(&#34; link&#34; + i);
temp.onclick = function ...
答案 2 :(得分:0)
你应该使用getElementById:
document.getElementById("link" + i);
我还建议你使用jQuery框架。它比简单的javascript更容易。