为什么在使用element.innerHTML之后事件侦听器会停止工作? [英] Why can event listeners stop working after using element.innerHTML?
问题描述
我是JavaScript的初学者。一本JavaScript书中说 element.innerHTML
的缺点之一是:
Event处理程序可能不再按预期工作。
我不明白这是什么意思。有人可以举个例子吗?
最有可能的是,它指的是某些人在最后插入HTML的技术:
element.innerHTML + =插入的HTML;
这将获得当前的HTML,将其与插入的HTML连接起来,然后进行全部解析。
作为副作用,现有元素的所有内部状态(如事件侦听器,检查状态等)都将丢失。
var btn = document.querySelector( button); btn.addEventListener( click,function(){btn.textContent =我赢了'不再工作了;; document.body.innerHTML + =< p>插入的文本< / p>;});
< button>点击我以插入HTML< / button>
相反,如果要在元素的末尾插入一些HTML,可以使用
element.insertAdjacentHTML('beforeend',插入的HTML);
这将保留现有元素。
var btn = document.querySelector( button); btn.addEventListener( click,function(){btn.textContent =我还在工作;文档。 body.insertAdjacentHTML( beforeend,< p>插入的文本< / p>);});
< button>点击我插入HTML< / button>