レッスンに戻る

「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 を処理する方法が詳細に指定されており、ブラウザのこのような動作は正しいものです。