使用 innerHTML 时若与 createElement 同级并且 innerHTML 在后会出现事件无法绑定,原因是 innerHTML 后父级 DOM 重新加载。例如:
/*有问题的情况*/
function c(){
var a = document.createElement("div");
var a1 = document.createElement("div");
a1.innerText = "点我不会执行onclick";
a1.onclick = function(){alert(1)};
a.appendChild(a1);
a.innerHTML += "";
document.getElementsByTagName("body")[0].appendChild(a);
}
/*没问题的情况*/
function c(){
var a = document.createElement("div");
a.innerHTML += "";
var a1 = document.createElement("div");
a1.innerText = "点我会执行onclick";
a1.onclick = function(){alert(1)};
a.appendChild(a1);
document.getElementsByTagName("body")[0].appendChild(a);
}
dg
dg
ive***foxmail.com3年前 (2018-06-30)