2012-01-12 72 views
1

我需要一些JavaScript(而不是JQuery等)代码来复制克隆节点,并将其插入到复制节点中,然后将其插入下一个 。例如。克隆节点并附加到xml

<a> 
    <b> 
     <ab></ab> 
     <bc></bc> 
    </b> 
</a> 

现在复制从源XML的<b>节点,并追加其作为下一个兄弟,

<a> 
     <b> 
      <ab></ab> 
      <bc></bc> 
     </b> 
     <!-- this is the copied node that will be appended. --> 
     <b> 
      <ab></ab> 
      <bc></bc> 
     </b> 
     <!-- copied node ends here. --> 
    </a> 

我将不胜感激,如果一些身体告诉我一些代码示例,这是在ATLEAST Mozilla2支持后和IE5 +。 CloneNode方法在许多主要版本的主要浏览器中无法正常工作。但是,所有IE浏览器都支持CloneNode。所以cloneNode方法不会是一个解决方案。

回答

2

假设你正在通过ID所需的节点,这里是你如何可以克隆现有节点和克隆追加作为同级节点:

var node = document.getElementById("toBeCloned"); 
var parentNode = node.parentNode; 
alert(parentNode.outerHTML); 
var clonedNode = node.cloneNode(true); 
clonedNode.removeAttribute("id"); 
parentNode.appendChild(clonedNode); 
alert(parentNode.outerHTML); 

alerts将显示哪些XML前后看了插入。

此代码将与Mozilla和任何合理版本的IE一起使用。我无法保证IE5支持IE7,因为我无法访问这些浏览器。

+0

感谢您为我写的代码阿巴斯。但我提到cloneNode方法在旧版浏览器的大部分基元版本中都不能正常工作。我需要cloneNode方法以外的东西,因为我的程序本身是针对旧浏览器的。 – Acn 2012-01-12 07:11:01

+0

在这种情况下,您需要使用createElement。但是,这种方法的问题在于您必须自己创建给定节点内的所有子节点。这意味着通过该节点的递归去,让子节点的名称,调用的createElement方法和新节点添加到父节点。 – Abbas 2012-01-12 07:17:54