「aaa」が残っているのはなぜですか?
importance: 1
次の例では、呼び出しtable.remove()
はドキュメントからテーブルを削除します。
しかし、実行すると、テキスト"aaa"
が依然として表示されていることがわかります。
なぜそうなるのでしょうか?
<
table
id
=
"
table"
>
aaa
<
tr
>
<
td
>
Test</
td
>
</
tr
>
</
table
>
<
script
>
alert
(
table)
;
// the table, as it should be
table.
remove
(
)
;
// why there's still "aaa" in the document?
</
script
>
タスクの HTML は正しくありません。これが奇妙な現象の理由です。
ブラウザはそれを自動的に修正する必要があります。しかし、<table>
の中にテキストがない可能性があります。仕様によると、テーブル固有のタグのみが許可されているからです。そのため、ブラウザは<table>
の前に"aaa"
を表示します。
テーブルを削除すると、それが残ることが明らかです。
ブラウザのツールを使用して DOM を調べることで、質問には簡単に答えることができます。<table>
の前に"aaa"
が表示されます。
HTML 標準では無効な HTML を処理する方法が詳細に指定されており、ブラウザのこのような動作は正しいものです。