我想動(dòng)態(tài)加載按鈕,每個(gè)按鈕都加載了一個(gè)附加的 addEventListener 和一個(gè)隨機(jī)生成的 id。按鈕發(fā)出警報(bào)。問(wèn)題:當(dāng)我加載(通過(guò)單擊添加按鈕)新按鈕時(shí),只有第一個(gè)按鈕附加了事件偵聽(tīng)器?這是我的代碼: <button id="button" type="button" >add</button> <div id="demo"></div>function Pers45on() {di3=rngc(10,100001);var yu=document.getElementById('demo').innerHTML;document.getElementById('demo').innerHTML='<button id="'+di3+'" type="button" >newb</button>'+yu;document.getElementById(di3).addEventListener('click', al, false);}function al(){alert();}document.getElementById('button').addEventListener('click', function(){Pers45on();}, false);function rngc(A,B) { var d = new Date(),n = d.getMilliseconds(); return 'ig'+Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0,A)+Math.floor(Math.random() * (B))+n;}更新:我給出的示例代碼與我的實(shí)際問(wèn)題相同;我正在嘗試將許多 HTML 元素作為字符串附加,并且使用 createElement 可以正常工作,但不是不實(shí)用的解決方案。我還有一個(gè)有效的解決方案:objar=[];function Pers45on() {di3=rngc(10,100001);objar.push(di3);var yu=document.getElementById('demo').innerHTML;document.getElementById('demo').innerHTML='<button id="'+di3+'" type="button" >'+di3+'</button>'+yu;document.getElementById(di3).addEventListener('click', al, false); for(i=0; i<=objar.length;i++){document.getElementById(objar[i]).addEventListener('click', al, false);} }但我不喜歡 for 循環(huán),我試圖理解為什么會(huì)發(fā)生這種情況并尋找任何令人信服的解決方案。
addEventListener 不適用于動(dòng)態(tài)加載內(nèi)容
天涯盡頭無(wú)女友
2021-09-30 15:15:58