第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以在不破壞后代事件偵聽器的情況下追加到innerHTML?

是否可以在不破壞后代事件偵聽器的情況下追加到innerHTML?

是否可以在不破壞后代事件偵聽器的情況下追加到innerHTML?在下面的示例代碼中,我附加了一個onclick包含文本“foo”的span的事件處理程序。處理程序是一個匿名函數(shù),它將彈出alert().但是,如果我分配給父節(jié)點的innerHTML,這個onclick事件處理程序被銷毀-單擊“foo”無法彈出警報框。這個可以修好嗎?<html>  <head>  <script type="text/javascript">   function start () {     myspan = document.getElementById("myspan");     myspan.onclick = function() { alert ("hi"); };     mydiv = document.getElementById("mydiv");     mydiv.innerHTML += "bar";   }  </script>  </head>  <body onload="start()">    <div id="mydiv" style="border: solid red 2px">      <span id="myspan">foo</span>    </div>  </body></html>
查看完整描述

3 回答

?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗 獲得超6個贊

不幸的是,分配給innerHTML導(dǎo)致所有子元素的破壞,即使您試圖追加。如果希望保留子節(jié)點(及其事件處理程序),則需要使用DOM函數(shù):

function start() {
    var myspan = document.getElementById("myspan");
    myspan.onclick = function() { alert ("hi"); };

    var mydiv = document.getElementById("mydiv");
    mydiv.appendChild(document.createTextNode("bar"));}

編輯:鮑勃的解決方案,從評論。發(fā)你的答案鮑勃!為它獲得榮譽(yù)。*-)

function start() {
    var myspan = document.getElementById("myspan");
    myspan.onclick = function() { alert ("hi"); };

    var mydiv = document.getElementById("mydiv");
    var newcontent = document.createElement('div');
    newcontent.innerHTML = "bar";

    while (newcontent.firstChild) {
        mydiv.appendChild(newcontent.firstChild);
    }}


查看完整回答
反對 回復(fù) 2019-06-18
?
三國紛爭

TA貢獻(xiàn)1804條經(jīng)驗 獲得超7個贊

現(xiàn)在是2012年了,jQuery的附加函數(shù)和前置函數(shù)正是這樣做的,在不影響當(dāng)前內(nèi)容的情況下添加內(nèi)容。非常有用。


查看完整回答
反對 回復(fù) 2019-06-18
  • 3 回答
  • 0 關(guān)注
  • 381 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號