Úloha 3 – Zalomení řádků v JavaScriptu a HTML
Úvod do úlohy
Při výpisu textu se velmi brzy narazí na problém, jak správně „odskočit na nový řádek“. V HTML stránce se text obvykle zalamuje jinak než v konzoli nebo v modálním okně (např. alert). Studenti proto potřebují pochopit, že existuje rozdíl mezi vizuálním zalomením v prohlížeči a syntaktickým vložením nové řádky v řetězci. Správná volba prostředku je důležitá – jinak se může stát, že text na stránce nevypadá podle očekávání, nebo že se výstup v konzoli „slije“ do jednoho řádku.
Teorie a principy
-
Zalomení v HTML (
<br>)-
V HTML dokumentu se mezery a nové řádky ignorují (převedou se na jednu mezeru).
-
Pokud chceme v textu opravdu nový řádek, musíme použít HTML značku
<br>. -
<br>je čistě vizuální pokyn pro prohlížeč – neexistuje v samotném řetězci.
-
-
Zalomení v JavaScriptu (
\n)-
Úniková sekvence
\nvloží nový řádek přímo do textového řetězce. -
Funguje v prostředích, která čtou text znak po znaku – například v konzoli nebo v modálním okně (
alert). -
V HTML se
\nignoruje (zobrazí se jako mezera nebo vůbec), takže tam nestačí.
-
-
Rozdíl mezi vizuálním a syntaktickým zalomením
-
<br>→ ovlivňuje, jak se text zobrazí na stránce. -
\n→ je součástí řetězce, má význam při výpisu do konzole, souboru nebo alertu.
-
Praktické příklady kódu
Typické chyby / záludnosti
-
Použití
\nv HTML-
Studenti čekají, že
\nzalomí text i na stránce. Nezobrazí se – je potřeba<br>.
-
-
Zapomenutí na bezpečnost
innerHTML-
Pokud do stránky vkládáme uživatelský text, neměli bychom ho bez úpravy spojovat s HTML. (Zde se to ukazuje jen jako demonstrace rozdílu mezi
\na<br>.)
-
-
Nesprávné očekávání v konzoli
-
V konzoli nebo alertu
<br>nic neudělá, vypíše se jako obyčejný text.
-
Shrnutí
-
V HTML se zalomení řádků provádí pomocí značky
<br>. -
V řetězcích v JavaScriptu použijeme pro nový řádek únikovou sekvenci
\n. -
\nfunguje v konzoli nebo alertu, ale ne v HTML. -
<br>funguje v HTML, ale ne v konzoli ani alertu. -
Je důležité rozlišovat vizuální formátování (HTML) a syntaktický znak v textu (
\n).