使用变量&循环创建“onclick”函数

时间:2013-03-17 22:11:43

标签: javascript

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

3 个答案:

答案 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更容易。