2012-01-12 15 views
1

クローンノードをコピーして次の をコピーしたノードに挿入するにはjavascript(JQueryなどではない)コードが必要です。たとえば。ソースXMLから<b>ノードをコピーし、次の兄弟として、それを追加した後、今ノードをクローンしてxmlに追加する

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

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

いくつかの体は私に少なくともMozilla2でサポートされているいくつかのコード例を示した場合、私は感謝しなければなりませんIE5 +です。 CloneNodeメソッドは、多くのプリミティブバージョンのメジャーブラウザーでは正しく機能しません。しかし、CloneNodeはすべてのIEブラウザでサポートされています。だから、cloneNodeメソッドは解決策にはなりません。あなたはIDによって、必要なノードを取得していると仮定すると

答えて

2

は、ここでは、既存のノードのクローンを作成し、兄弟ノードとしてクローンを追加することができます方法は次のとおりです。

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

私のためのコードを書いてくれてありがとうAbbas。しかし、cloneNodeメソッドは古いブラウザのほとんどのプリミティブバージョンで正しく機能していないと述べました。私のプログラムは古いブラウザそのものをターゲットにしているので、cloneNodeメソッド以外のものが必要です。 – Acn

+0

その場合は、createElementを使用する必要があります。しかし、そのアプローチの問題は、あなた自身でノード内のすべての子ノードを作成する必要があることです。これは、子ノードの名前を取得し、createElementメソッドを呼び出して親ノードに新しいノードを追加することで、ノードを再帰的に経由することを意味します。 – Abbas

関連する問題