无法在另一个节点之前和之后插入节点

时间:2011-01-26 21:03:40

标签: javascript dom

我正在尝试在现有节点之前和之后插入节点。 问题是,它只会插入其中一个。奇。任何人都可以解释原因吗?

这是代码

// 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

3 个答案:

答案 0 :(得分:5)

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

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

// 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);

答案 1 :(得分:2)

只有一个newNode。插入不会克隆它 - 它会移动它。

答案 2 :(得分:-1)

insert after (single llinked list list node *previous,single linked list node*new node)
     {
  if(new node==null)
    return;
else{
    if(previous==null)
    add first(new node);
else{
   single linked list node*nex=previous->;
   previous->next=new node;
   new node-> next=next;
      }
    }
  }