zpět k lekci

Proč tady zbude „aaa“?

důležitost: 1

V následujícím příkladu volání tabulka.remove() odstraní tabulku z dokumentu.

Pokud si ho však spustíte, uvidíte, že text "aaa" je stále viditelný.

Proč se tak děje?

<table id="tabulka">
  aaa
  <tr>
    <td>Test</td>
  </tr>
</table>

<script>
  alert(tabulka); // tabulka, jak by měla vypadat

  tabulka.remove();
  // proč je v dokumentu stále „aaa“?
</script>

Důvodem této podivnosti je, že HTML kód v tomto úkolu je nekorektní.

Prohlížeč ho musí automaticky opravit. Uvnitř <table> však nesmí být žádný text: podle specifikace jsou povoleny jen značky specifické pro tabulku. Prohlížeč tedy zobrazí "aaa" před <table>.

Nyní je jasné, proč zůstane, i když tabulku odstraníme.

Na tuto otázku lze snadno odpovědět po prozkoumání DOMu prohlížečovými nástroji. Uvidíte "aaa" před <table>.

Standard HTML podrobně specifikuje, jak se má zpracovávat vadný HTML, a tak je toto chování prohlížeče korektní.