187  
查询码:00000947
addEventListener多次触发,removeEventListener不生效问题
作者: 朱凡 于 2019年12月31日 发布在分类 / FM组 / FM_App 下,并于 2019年12月31日 编辑
addEventListener多次触发 removeEventListener不生效问题

addEventListener多次触发,removeEventListener不生效问题

用addEventListener绑定事件,但是addEventListener可以给同一元素多次绑定同一事件,导致多次触发。

解决示例如下:

var clickFun = null  // 定义在最外层,不会重新执行的地方
aa = function() {
    clickFun  && (window.removeEventListener("click",clickFun));
    clickFun = function(){
        alert("1")
    }
    window.addEventListener("click",clickFun)
}
setInterval(function(){
    aa ()
},2000)

备注

var a=function(){}和function a(){}有什么区别

var a = function() {
  函数体:
  }:
此时函数体本身作为变量存在,因此在浏览器进行执行前处理时并不把他加载在window对象的属性中,而是在程序执行过程中执行到变量赋值时才加载到window对象的属性中。
function a () {}
程序执行:按照从上到下的顺序执行,
  一旦用到变量,则变量名存入到堆内存,变量值存入到栈内存,此时内存回收程序员是无法控制的,只能等待浏览器回收。
  一旦执行函数,函数进入到栈内存中,函数的变量被加载到栈内存中,函数执行后,马上释放栈内存。

addEventListener和removeEventListener使用时操作的一定要是同一个function(同一内存)。




 推荐知识

 历史版本

修改日期 修改人 备注
2019-12-31 20:45:42[当前版本] 朱凡 其他原因...
2019-12-31 20:44:10 朱凡 创建版本

  目录
    知识分享平台 -V 4.8.7 -wcp