addEventListener 函数的弊端 ??

   html :

   b.onclick = function(){  
      var sayHello = function (){
         console.log('你好');
      };
      
      c.removeEventListener('click' , sayHello , false);
      c.addEventListener('click' , sayHello , false);
      
   }

按钮 b , 按钮 c 。 点击一下按钮b 给按钮 c 绑定事件 。

点击按钮b三次 , 再点击一下按钮 c 。 提示了三个 '你好' 

如何做到只提示一个 '你好'
阅读 3.8k
4 个回答

addEventListener本来就是可以绑定多个事件的,你调用了三次就绑定了三个事件。

要removeEventListener必须要传入绑定的时候的同一个函数。你按钮b的事件每次都重新创建了一个sayHello的函数,每次调用的sayHello都是不同的函数。你removeEventListener自然就不起作用了。

不要把你不懂的东西叫做“弊端”,你自己没有理解它的特性就不要妄加批评。

为啥把优势说成弊端。举个不恰当的例子:想象一下,在一个多人合作的项目中,以window.onload作为入口函数,这样就会出现每个人都写一个onload,因为window.onload这种方式会有后面的覆盖前面的,然后就出现了只有最后一个人的代码有效。

再举个例子,同样是多人协作,都想对某个按钮绑定一个事件,难道还得先商议一下,你在那个按钮绑定的函数先别用了,借给我用用

addEventHandler在功能上并没有什么弊端,它可以说是onclick这类绑定事件方式的升级版。它绑定同个事件,可以有多个处理函数。
不过非要说弊端的话,那就是兼容性了。不过自己封装个兼容函数就可以解决了。

如何只提示一次你好:把 sayHello 扔外面
相关内容:闭包

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题