0

我正在尝试使用 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>
4

3 回答 3

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);
}
于 2013-03-17T22:13:56.487 回答
0

试试这个...

var temp = document.getElementById("link" + i);

temp.onclick = 功能...

于 2013-03-17T22:17:19.227 回答
0

你应该使用 getElementById :

document.getElementById("link" + i);

我也建议你使用 jQuery 框架。它比纯 JavaScript 简单。

于 2013-03-17T22:18:16.783 回答