手记

JS实现循环给元素绑定事件

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);   
  }        
}  
69人推荐
随时随地看视频
慕课网APP

热门评论

第一种写法本来就不好、给每个a都绑定了一个onclick、很多个a的时候呢、你的性能呢

用委托也可以,大家可以常识delegate委托,但针对one得事件不合适

var a=function(i){} a(i);第一次看见这种,回去宿舍调试一下代码

查看全部评论