Is it possible to append to innerHTML without destroying descendants' event listeners?

前端 未结 13 1379
悲哀的现实
悲哀的现实 2020-11-21 23:40

In the following example code, I attach an onclick event handler to the span containing the text \"foo\". The handler is an anonymous function that pops up an <

13条回答
  •  Happy的楠姐
    2020-11-22 00:24

    Losing event handlers is, IMO, a bug in the way Javascript handles the DOM. To avoid this behavior, you can add the following:

    function start () {
      myspan = document.getElementById("myspan");
      myspan.onclick = function() { alert ("hi"); };
    
      mydiv = document.getElementById("mydiv");
      clickHandler = mydiv.onclick;  // add
      mydiv.innerHTML += "bar";
      mydiv.onclick = clickHandler;  // add
    }
    

提交回复
热议问题