一、概念

insertAdjacentHTML() 方法将指定的文本解析为 Element 元素,并将结果节点插入到DOM树中的指定位置。它不会重新解析它正在使用的元素,因此它不会破坏元素内的现有元素。这避免了额外的序列化步骤,使其比直接使用innerHTML操作更快。

二、比较

在以前,我们习惯使用 DOM 中的 createElement 方法来创建元素,但是当元素内容比较繁杂时,就需要使用 innerHTML 来进行赋值,再在 appendChild 追加到父元素中。appendChild 是不支持追加字符串元素子元素的,而 insertAdjacentHTML 可以支持追加字符串子元素。简化了代码的复杂度。

三、使用方法

语法:

element.insertAdjacentHTML(position, text);

position :表示插入内容相对于元素的位置,可以是以下几个有效值中的一个:

  • 'beforebegin':元素自身的前面。
  • 'afterbegin'插入元素内部的第一个子节点之前
  • 'beforeend':插入元素内部的最后一个子节点之后。
  • 'afterend':元素自身的后面。
<!-- beforebegin -->
<ul>
  <!-- afterbegin -->
    <li></li>
  <!-- beforeend -->
</ul>
<!-- afterend -->

text : 是要被解析为 HTML 或 XML 元素,并插入到 DOM 树中

使用实例:

// 原 HTML中的代码 <div id="hello">hello</div>

var h = document.getElementById('hello');
h.insertAdjacentHTML('afterend', '<div id="world">world</div>');

// 此时,HTML 新结构变成:
// <div id="hello">hello</div><div id="world">world</div>

四、注意事项

1、使用 insertAdjacentHTML 插入用户输入的 HTML 内容的时候,需要转义之后才能使用。

2、如果只是为了插入文本内容(而不是HTML节点),不建议使用这个方法,建议使用node.textContent 或者 node.insertAdjacentText()。因为这样不需要经过HTML解释器的转换,性能会好一点。

04-18 17:02