js 或 .addEventListener 解决动态绑定事件时不能传参的问题

问题描述:
 
举个例子,假如我们有一个div (id="div1"), 我们想给它绑定一个onclick事件并传入字符串参数:

(错误案例, 会导致如下后果)

 
会导致加载页面时就执行了,并没有等到点击事件触发, 并且点击后不执行;
 

 var div=document.getElementById('div1');
    div.onclik=fun('传入实参');
    function fun(arg)
    {
        alert(arg);
    }

 
 正确的绑定方式是这样的:
 

   var div=document.getElementById('div1');
    div.onclik=fun;
    function fun()
    {
        alert("");
    }

 
 也就是直接把方法名赋给 dom对象的onclick事件,

但这样就不能传参了啊, 别急,老衲有一妙计
带参数的绑定:
 

var div=document.getElementById('div1');
    div.onclik=function () { fun("此处传入实参");  }
     
    function fun(arg)
    {
        alert(arg);
    }

  
 也就是说除了直接把方法名赋给 dom对象的onclick事件,

还可以在onclick事件事件后定义一个方法, 我们可以在方法体中掉用我们真正的方法并传入我们想要的参数,
需要注意的是:

临时定义的这个函数中 this指的是div对象, 所以我们想传入div对象时使用 this就可以了

posted @ 2020-07-27 14:34  亦碗粥  阅读(739)  评论(0编辑  收藏  举报