javascript - addEventListener 函数的弊端 ??
伊谢尔伦
伊谢尔伦 2017-04-11 12:02:22
[JavaScript讨论组]
   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 。 提示了三个 '你好' 

如何做到只提示一个 '你好'
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(4)
黄舟

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

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

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

黄舟

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

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

PHP中文网

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

黄舟

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号