js用for循环为对象添加事件并传递参数

 var objArr = getObjArr(id);
   for(var i=0; i<objArr.length; i++){
    var param=objArr.param
    addEvent(objArr[i],'click',function(){
      new Image().src = [u, "?t=", new Date().getTime(), "&p=", param].join('');
    });
   } 

 上述写法有问题,因为param会变成最后一个值,所以动态传递参数失败。相对于addEvent的object来说param变成了一个全局的变量。

修改后:

 var objArr = getObjArr(id);
   for(var i=0; i<objArr.length; i++){
    var params=objArr.param
  addEvent(objArr[i],'click',(function(param){
    return function(){
        new Image().src = [u, "?t=", new Date().getTime(), "&p=", param].join('');
    }
   })(params));
}

绑定事件需要的参数,动态的传进来。

原文地址:https://www.cnblogs.com/zhaofeng555/p/3449648.html