私はelem.removeChild()
を使用してドキュメントから要素を削除しましたが、適切なときにそれらを追加できるように、その要素へのJavaScript参照を保存しています。 FirefoxとChromeでうまく動作します。Internet ExplorerとremoveChild()
IE7では、これらの要素がプロセスで破棄され、すべての子が削除されていることがわかりました。それらを同じ親要素に戻すと、それらは同じ型の要素であり、クラス名のようなものは保持されますが、子要素はありません。
これが期待どおりの動作ですか?アプリを変更して別のことをすることができることは分かっていますが、それには数時間のリワークが必要です。私はそれを避けたいと思っています。私はいつも要素を削除することをお勧めします。removeChild()
を使用するか、親のinnerHTML
を空の文字列に設定し、要素への参照を持っている限り(つまり変数が要素を指しているだけでなく要素ID)、要素を混乱させることなく自由に要素を追加したり削除したりできました。
これはIEのバグですか、私は何とか混乱していますし、何か他のことが起こっているのですか?
予期せぬことがInternet Explorer 7であることを期待してください。 – Pointy
removeChildの仕様では、削除するノードの子ノードをそのノードと一緒に保持する必要があるとは明示的には言いませんが、 FFとChromeの開発者が決めたもの親のinnerHTMLが空の文字列に設定されている場合、仕様が何をするのか分かりませんが、私の意見では、「そこにあったものをすべて拭き取ってください」というような感じです。削除された要素のコードへの参照があったとしても、ブラウザはそのinnerHTMLにあったものをすべて破棄します。 – nnnnnn
@nnnnnnコメントでない場合は、私はあなたの答えを受け入れるだろう。 removeChildは本当に要素を破壊するわけではなく、innerHTMLを ''に設定するだけです。 – rob