如何在addEventListener里传递参数(是一个函数)

如何在addEventListener里传递参数(是一个函数)?
百度了半天也没有找到合适的方法,只好来请教大家了

 function bandle(fn){
     var  newnode=doc.createElement('li');
     var val=ipt.value;
     newnode.innerHTML=val;
     if(val==""){
           alert("格式错误,请输入正确的字符!")  
     }
     else{
        fn();
     }
}

function leftEn(){
    ullist.insertBefore(newnode,ullist.childNodes[0]);
}
        
leftEnter.addEventListener("click",function(){
     bandle(leftEn);
});
   

报错信息是

fn is not a function
   at bandle (enter.html:66)
   at HTMLButtonElement.

说明函数没有作为参数传进去的意思吗?

图片描述

阅读 18.6k
4 个回答

这个原因是因为addEventListener这个操作绑定的响应函数的第一个参数默认就是event,你想要传递其他参数必须是在第二个位置上传递,而且你也没有必要把函数当做参数是使用啊,可以直接在点击事件的回调里面直接使用这个函数吧。

clipboard.png
把这个参数去掉

leftEn为啥要当传参用?直接在bandle里面调用不可以吗

leftEnter.addEventListener("click",function(){ bandle(leftEn); });
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题