0

複数の子を持つ親Aから、最初は空の親Bに画像をドラッグアンドドロップしようとしています。element.parent = document.getElementById('foo')を指定できますが、元々fooの下に要素を配置したかのように、ドキュメントは自然に流れません。

私は現在、JavaScriptスタイルで親を子が含まれているように動作させ、子を親に含まれているように動作させることでこの動作を回避していますが、より良い方法があるかどうかを知りたいです。子が元の親ではなくターゲットの親の下に配置されているように見えるようにドキュメントが更新されました。

4

1 に答える 1

3

DOM内のアイテムを正しく移動していません。正しく移動すると、表示が自動的に更新されます。

.parentプロパティを設定するだけでは不十分です。まず.parent、DOM要素のプロパティでさえありません(それは.parentNodeです)。次に、直接設定できるプロパティではありません(DOM仕様によると、読み取り専用のプロパティです)。代わりに、次のようにする必要があります。

document.getElementById('foo').appendChild(element);

これにより、現在のDOMの場所から削除され、新しい親ノードの最後の子として追加されます。既存の子に対して特定の子として(たとえば、3番目の子ノードまたは1番目の子ノードとして)配置する場合は、.insertBefore()の代わりにを使用できます.appendChild()

既存のノードを移動するのではなく、ノードを新しい場所にコピーする場合は、最初にノードのコピーを作成する必要があります(最初から作成するか.cloneNode()、同じ方法でコピーを使用してDOMに挿入します)。

于 2012-08-31T16:35:07.427 に答える