在元素之前或者之后插入新的元素

在给定的 DOM 元素之前或者之后插入新的元素


函数insertAfter()允许你在DOM树中的现有元素之后插入一个新元素:


function insertAfter(el, referenceNode) {
  referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);
}

// example
var newEl = document.createElement('div');
newEl.innerHTML = '<p>Hello World!</p>';

var ref = document.querySelector('div.before');

insertAfter(newEl, ref);
      

要在另一个元素之前插入一个元素,我们可以使用一个非常类似的辅助函数:insertBefore()


function insertBefore(el, referenceNode) {
  referenceNode.parentNode.insertBefore(el, referenceNode);
}

// example
var newEl = document.createElement('div');
newEl.innerHTML = '<p>Hello World!</p>';

var ref = document.querySelector('div.before');

insertBefore(newEl, ref);
      

所有主浏览器(包括IE 8和更低版本)都支持这些DOM方法。

如果打算以HTML文本字符串的形式插入新结构,则应使用 insertAdjacentHTML()。 此方法将指定的文本解析为HTML,并将结果元素插入DOM树中的指定位置。 它不会重新解析正在使用该元素的元素,因此不会破坏该元素内部的现有元素。