【发布时间】:2016-02-17 23:28:36
【问题描述】:
我有一些<div>,我一直在其中添加新对象。
这些对象被分配了监听器。
问题是当我使用.innerHTML 添加这些新对象时,之前的监听器会丢失。
是否可以创建一个表示 HTML 对象的 JS 字符串,并在没有.innerHTML += ... 的情况下将其作为子对象附加?
我举个例子:
var line_num = 0;
function addTextLine(line) {
var lineId = "line_" + line_num;
var lineHtml = "<p id = '" + lineId + "'>" + line + "</p>";
document.getElementById("some_div_id").innerHTML += lineHtml;
document.getElementById(line_id).addEventListener("click", function() {
alert("hello");
});
line_num += 1;
}
对some_dive_id的innerHTML的修改,移除了旧的<p>对象的事件监听器。
那么 - 是否可以将 <p> HTML 字符串转换为对象,从而将其附加到 some_div_id 而不修改其 .innerHTML ?
【问题讨论】:
-
您可以使用DOM APIs like
.appendChild()向 DOM 添加新节点。 -
但是如何将文本
<p>...</p>转换为可附加对象? -
使用像
createElement()和setAttribute()这样的API。 -
你能举个例子吗?
-
很难想出更好的理由不使用 HTML 作为使用
innerHTML插入的字符串。
标签: javascript html