2012-01-12 104 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