cookie monster 解决了这个问题(两年多前),但我只是想分享一个我发现的有用链接,其中包含另一个示例和一个漂亮的可视化。
https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML
编辑:如果该链接变得无用,这里是来自 MDN 的我发现有用的相关信息:
概括
insertAdjacentHTML() 将指定的文本解析为 HTML 或 XML,并将生成的节点插入到 DOM 树中的指定位置。它不会重新解析正在使用的元素,因此不会破坏元素内的现有元素。这一点,并且避免了额外的序列化步骤,使它比直接的 innerHTML 操作快得多。
句法
element.insertAdjacentHTML(position, text);
position
是相对于元素的位置,并且必须是以下字符串之一:
'beforebegin'
在元素本身之前。
'afterbegin'
就在元素内部,在它的第一个子元素之前。
'beforeend'
就在元素内部,在它的最后一个子元素之后。
'afterend'
在元素本身之后。
text
是要被解析为 HTML 或 XML 并插入到树中的字符串。
职位名称的可视化
<!-- beforebegin -->
<p>
<!-- afterbegin -->
foo
<!-- beforeend -->
</p>
<!-- afterend -->
注意:beforebegin
和afterend
位置仅在节点位于树中并且具有元素父节点时才有效。
例子
// <div id="one">one</div>
var d1 = document.getElementById('one');
d1.insertAdjacentHTML('afterend', '<div id="two">two</div>');
// At this point, the new structure is:
// <div id="one">one</div><div id="two">two</div>