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. removeChild():インデントも削除するには?
- 2. AS3 - removeChild()はステージからすべてを削除します
- 3. Javascript - removeChildはテーブルのセル全体を削除します
- 4. OnClientClick = "確認を返します( '本当に削除しますか?');"
- 5. 削除要素
- 6. Javascriptは削除されたDOM要素のイベントハンドラを削除しますか?
- 7. howtoはデフォルトCSSからhtml要素を削除しますか?
- 8. 設定が本当にユーザーコントロール要素
- 9. 入れ子のフォーム要素は削除しますが、入力要素は削除しない正規表現
- 10. Collections.synchronizedlist()は、反復処理中に要素を削除します。
- 11. JQueryのappend要素はすべてのhtml dom要素を削除します
- 12. jQueryは、___クラスの別の要素を含む要素を削除します
- 13. リストから要素を削除する
- 14. jQueryは複数の要素とfadeIn要素を削除します
- 15. Nokogiriの要素から外部タグを削除しますか?
- 16. VUEJSリストから要素を削除しますか?
- 17. JQueryで要素を削除
- 18. 数秒後に要素をフェードアウトして削除します
- 19. jqueryを挿入する前に要素を削除します。
- 20. OAuth 2クライアントは本当にTLSを必要としますか?
- 21. Flash AS3 - オブジェクトを完全に削除するremoveChild()?
- 22. *本当に* JavaScriptを使ってクッキーを削除する
- 23. jQueryのvalidation errorPlacementと要素を削除していますか?
- 24. clojure - refベクトルから要素を削除します
- 25. 多次元配列の親要素を削除しますか?
- 26. jstreeコンテキストメニューからデフォルトの要素を削除します
- 27. observableArrayから要素を削除します。
- 28. mongodbの配列から要素を削除します
- 29. CDATAは本当に必要ですか?
- 30. KillTimerは本当に必要ですか?
ありがとうございました:) –
戻り値に同じ効果が割り当てられているとは限りません。 – awm
Nullは便利で、値を破棄していることは明らかです。 'oldNode = 'このノードを削除してください' 'を実行すると、文字の浪費のように思えます。 –