2

ドキュメントから要素を削除するために使用していelem.removeChild()ますが、必要に応じて要素を追加できるように、その要素へのJavaScript参照を保存しています。FirefoxとChromeで問題なく動作します。

IE7では、これらの要素がプロセス中に破棄され、すべての子が削除されていることに気付きました。それらを同じ親要素に追加し直すと、それらは同じタイプの要素であり、クラス名などを保持していますが、子要素はありません。

これは予想される動作ですか?アプリを変更して別の方法で処理できることはわかっていますが、数時間の手直しが必要であり、明らかにそれを避けたいと思います。removeChild()親を使用するか、親innerHTMLを空の文字列に設定することによって、要素への参照がある限り(つまり、変数が要素だけでなく要素を指している限り)、要素を削除しても問題ないと常に考えてきました。id)、要素を台無しにすることなく、要素を自由に追加および削除しても問題ありませんでした。

これはIEのバグですか、私はどういうわけか混乱していて何か他のことが起こっていますか、それともこれは既知の予想される動作ですか?

4

2 に答える 2

1

removeChildの仕様では、削除されるノードの子をそのノードと一緒に保持する必要があると明示的には規定されていませんが、私には論理的にそうすべきであり、明らかにそれがFFおよびChrome開発者も決定したことです。親のinnerHTMLが空の文字列に設定されている場合、仕様が何をするかはわかりませんが、私の意見では、「そこにあったものをすべて消去する」と言っているようなものなので、その場合は合理的だと思います。削除された要素の一部への参照がコードにあったとしても、そのinnerHTMLにあったすべてのものを破棄するブラウザー。

于 2011-07-31T23:53:24.233 に答える
0

あなたの実装をもっと見ることなしに、あなたが盲目的な答え以上のものを得るかどうかはわかりません。これが1つです:

たまたまテーブルの行を操作していますか?この答えをチェックしてください 。どうやら、直接ではなく、IEで<tr>アタッチする必要があります。<tbody><table>

于 2011-07-11T00:13:53.277 に答える