removeChild
関数は本当に子ノードを完全に削除しますか?または、指定されたparantノードの子要素を削除するだけですか?それが本当に要素を削除しない場合は、要素を完全に削除する方法はありますか?removeChildは本当に要素を削除しますか?
答えて
。それがページの可視要素であれば、ページから削除されます。
しかし、Javascriptにガベージコレクションがあります。これは、変数が参照される限り、ノードオブジェクト自体が存続することを意味します。したがって、変数にノードを割り当てることができます。removeChild
を親ノードから「プルーニング」し、後で他のノードに挿入または追加することで、効果的にページ上を移動させることができます。
次のコードは、ノードを削除し、(ページに、このようにして)ツリーにそれを再追加する前に10秒待っ:
var oldNode = someNode.removeChild(...);
setTimeout(function() {
document.documentElement.appendChild(oldNode);
}, 10000);
これは、ノードオブジェクトがされていないことを意味しそれでも変数を指しているので、メモリから削除されます(つまり、oldNode
)。
別のケース:
var node = document.getElementById('test');
// ... do stuff
node.parentElement.removeChild(node);
// 'node' still exists, but has been removed from the page
// ... do some more stuff
node = document.getElementById('hello');
// The variable 'node' now points to something else;
// this means the original node will be deleted from memory
一方で、あなたは別の変数に削除したノードを再割り当てしません、場合、それは以降、いないドキュメントツリーを経由して(もうアクセスすることはできませんそれはJS変数からではなく、そこから削除されています)。そうJavascriptが自動的にメモリからそれを削除します:
someNode.removeChild(...);
変数に削除したノードを割り当て、その後、その変数にnull
(または何か他)を割り当てる - マルク・Bのように彼の答えに示唆 - 、完全に不要であり、 IMHO、ばか。
removeChildはdomから要素を削除しますが、削除を実行して別の場所に挿入する場合は、関数からも戻されます。それはないですので、
someNode.removeChild(...);
これはDOMからノードを削除します:これは完全にノードを削除します
oldNode = someNode.removeChild(...);
oldNode = null;
:あなたは本当に削除したノードを取り除くためにその戻り値を殺すために必要があるだろうあなたが他の場所に挿入することができるように見えるが、それを保存します:removeChild
方法は、単にその親から削除し
oldNode = someNode.removeChild(...);
最初の例は正しいですが、動作しないような状況がありました。'var aChild = document.createElement(...); someNode.appendChild(aChild); ... someNode.removeChild(aChild); 'ノードはaChild変数参照のために残ります。その場合、 'aChild'を削除してジョブを完了させる必要があります。 – CyberFonic
別のコンテキスト(削除されたノードへの他の参照があるかどうかわからない場合があります)では、削除されたノードが 'node.parentElement == null 'でどの状態にあるかを確認できます。 –
これは考慮に入れませんノードへの他の参照。つまり、ノードが他の場所で参照されている場合、 'removeChild'はノードを完全に削除しません。 –
実際にDOM要素を削除する場合は、 removeChildだけでは不十分です。これは、YSlowの著者Steve Sounders氏によるものです。
- 1. PHP removeChildのみ3つの要素のうち2つを削除します
- 2. removeChild():インデントも削除するには?
- 3. AS3 - removeChild()はステージからすべてを削除します
- 4. Javascript - removeChildはテーブルのセル全体を削除します
- 5. OnClientClick = "確認を返します( '本当に削除しますか?');"
- 6. テーブルビューのオブジェクトを削除する要素を削除します。
- 7. removeChild();リストからすべてのアイテムを削除しない
- 8. Javascriptは削除されたDOM要素のイベントハンドラを削除しますか?
- 9. 削除要素
- 10. howtoはデフォルトCSSからhtml要素を削除しますか?
- 11. 設定が本当にユーザーコントロール要素
- 12. CKRecordを削除するのは本当に混乱しています
- 13. 削除された要素を格納しながら、ベクトルから要素を削除します。
- 14. リスト要素でリストア要素を削除しました
- 15. ベクターから要素を削除し
- 16. JQueryは親から要素を削除します
- 17. 入れ子のフォーム要素は削除しますが、入力要素は削除しない正規表現
- 18. 要素をDOMに追加する前に要素を削除します
- 19. 使用時にArrayListから要素を削除します
- 20. Collections.synchronizedlist()は、反復処理中に要素を削除します。
- 21. jQuery、削除は子要素を削除しない - 親だけ
- 22. DOMから要素が削除された場合、ExplicitWaitを削除します
- 23. 親要素は削除しますが、その子要素はThymeleafに保持しますか?
- 24. JQueryのappend要素はすべてのhtml dom要素を削除します
- 25. OAuth 2クライアントは本当にTLSを必要としますか?
- 26. jQueryは、___クラスの別の要素を含む要素を削除します
- 27. CDATAは本当に必要ですか?
- 28. KillTimerは本当に必要ですか?
- 29. local_variables_initializerは本当に必要ですか?
- 30. リストから要素を削除する
ありがとうございました:) –
戻り値に同じ効果が割り当てられているとは限りません。 – awm
Nullは便利で、値を破棄していることは明らかです。 'oldNode = 'このノードを削除してください' 'を実行すると、文字の浪費のように思えます。 –