HTML代码:
<div class="wrap">
<a href="javascript:;" class="link">第一个链接</a>
<a href="javascript:;" class="link">第二个链接</a>
<a href="javascript:;" class="link">第三个链接</a>
</div>
原JS代码(发现不管点哪个链接都是弹出“3”):
window.onload = function()
{
var aLi = document.getElementsByTagName("a");
for(var i = 0; i < aLi.length; i++)
{
aLi[i].onclick = function()
{
alert(i); //3
}
}
}
解决方案
window.onload = function()
{
var aLi = document.getElementsByTagName("a");
for(var i = 0; i < aLi.length; i++)
{
var a = function(k)
{
aLi[k].onclick = function()
{
alert(k);
}
}a(i);
}
}
热门评论
第一种写法本来就不好、给每个a都绑定了一个onclick、很多个a的时候呢、你的性能呢
用委托也可以,大家可以常识delegate委托,但针对one得事件不合适
var a=function(i){} a(i);第一次看见这种,回去宿舍调试一下代码