3

私はネイティブJavaScriptで遊んでいます。私は基本的に、追加、削除、移動、コピー、作成などの基本的なノード操作を練習しています。

移動のテスト中に、質問がありました。

http://jsfiddle.net/sJg7E/

上記のjsfiddleを見ると、私は「appendChild」を使用しています。どうしてノードを新しいdivに移動するのですか?ノードをコピーする場合は、ノードのクローンを作成する必要があることを知っています。「appendChild」コマンドでは見た目も音も正しくありません。

これは予想される動作ですか?

4

1 に答える 1

9

ノードは、親を 1 つだけ持つことができます。したがって、別のノードに追加すると移動します。

appendChild のドキュメントから:

指定された親ノードの子のリストの最後にノードを追加します。ノードが既に存在する場合は、現在の親ノードから削除され、新しい親ノードに追加されます。

同じページから:

新しい親の下に追加する前に、cloneNode を使用してノードのコピーを作成できます。(cloneNode で作成されたコピーは自動的に同期されないことに注意してください。)

また、次の点に注意してください。

このメソッドでは、異なるドキュメント間でノードを移動することはできません。別のドキュメントからノードを追加する場合 (たとえば、AJAX 要求の結果を表示する場合) は、最初に importNode を使用する必要があります。

appendChildの w3c 仕様も読むことができます。

このノードの子のリストの最後にノード newChild を追加します。newChild がすでにツリーにある場合は、最初に削除されます。

于 2012-08-27T17:49:24.027 に答える