这次项目遇到的一个bug,改了好久,才发现通过将addeventlistener绑定的函数放在一个外部函数中,外部函数执行几次,这个元素就会绑定几次,查了查,解决方案各种各样,这里我简单说两种。
const el=document.getElementById("el");
el.addeventlistener("change",function(){
})
(1)用元素直接绑定事件代替监听
const el=document.getElementById("el");
el.onchange=function(){
}
//这样的话元素只会绑定一次函数
(2)添加前通过removeEventListener将已经添加的处理函数进行移除
const el=document.getElementById("el");
el.removeEventListener("change",function(){
})
el.addeventlistener("change",function(){
}
//但是要注意进行removeEventListener时,第二个参数需要和addEventListener时的引用相同