2013-03-17 57 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更容易。