我正在尝试在现有节点之前和之后插入一个节点。
问题是,它只会插入其中之一。奇。谁能解释为什么?

这是代码

// create your new node <p>Hi</p>
 var newNode = document.createElement("p");
 newNode.appendChild(document.createTextNode("Hi"));

// a existing node for reference
var refNode = document.getElementById("xyz");

// insert newNode before refNode
refNode.parentNode.insertBefore(newNode, refNode);

// insert newNode after refNode
refNode.parentNode.insertBefore(newNode, refNode.nextSibling);


PS感谢karim79回答了我的previous question on insert after

最佳答案

将节点添加到文档时,必须将其从以前的任何位置删除。同一节点不能位于两个位置。

您想要的是第二个位置的节点的副本:

// create your new node <p>Hi</p>
var newNode = document.createElement("p");
newNode.innerHTML = "Hi";

// a existing node for reference
var refNode = document.getElementById("xyz");

// insert newNode before refNode
refNode.parentNode.insertBefore(newNode, refNode);

// insert newNode after refNode
refNode.parentNode.insertBefore(newNode.cloneNode(true), refNode.nextSibling);

09-20 03:52