назад до уроку

Чому "aaa" залишається?

важливість: 1

В прикладі нижче виклик table.remove() має видалити таблицю з документу.

Але, якщо ви запустите код, то побачите, що текст "aaa" не зникає.

Чому так відбувається?

<table id="table">
  aaa
  <tr>
    <td>Тест</td>
  </tr>
</table>

<script>
  alert(table); // таблиця, як і має бути

  table.remove();
  // чому текст "aaa" залишився в документі?
</script>

HTML в завданні написаний невірно. Це і є причиною дивної поведінки коду.

Браузер має виправити це автоматично. Але згідно специфікації тег <table> може містити в собі лише теги які відносяться до таблиць. Тому браузер виносить "aaa" перед тегом <table>.

Тепер очевидно, що коли ми видаляємо таблицю, текст залишається

Можна легко відповісти на це запитання, дослідивши DOM за допомогою інструментів веб-розробки в браузері. Ви побачите "aaa" перед <table>.

В стандартах HTML детально описано як обробляти некоректний HTML, тому така поведінка браузера є правильною.