Úloha 3 – Dynamické prvky na stránce (tvorba a mazání seznamu)
| Site: | Moodle ZČU |
| Course: | Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný) |
| Book: | Úloha 3 – Dynamické prvky na stránce (tvorba a mazání seznamu) |
| Printed by: | Guest user |
| Date: | Sunday, 18 October 2026, 9:59 AM |
Úvod do úlohy
Další krok v práci s DOM je dynamické vytváření a mazání prvků přímo z JavaScriptu. Tato dovednost je klíčová pro tvorbu moderních webových aplikací, kde se obsah stránky neustále mění – přidávají se položky seznamu, načítají se data z formulářů, generují galerie nebo aktualizují tabulky bez nutnosti znovu načítat celou stránku.
Pomocí metod jako createElement(), appendChild() a removeChild() dokážeme skládat HTML strukturu programově, a tím mít plnou kontrolu nad tím, co se uživateli zobrazí.
Teorie a principy
Vytvoření nového prvku
Metoda document.createElement("tag") vytvoří nový HTML element v paměti, ale zatím ho nevloží na stránku. Například:
Tím vznikne nový element <p>, který zatím nikde není vidět. Aby se objevil na stránce, musíme ho vložit do existujícího prvku pomocí metody appendChild().
Vkládání prvků
Metoda parent.appendChild(child) přidá nový uzel (například odstavec nebo obrázek) na konec obsahu rodičovského elementu.
Pokud chceme vložit více prvků najednou, je vhodné použít DocumentFragment, který slouží jako dočasný kontejner. Umožňuje přidávat velké množství elementů efektivněji, protože manipulace s fragmentem nevyvolává opakované překreslení stránky.
Odstraňování prvků
Pro odstranění použijeme parent.removeChild(child), kde parent je rodičovský element a child je uzel, který chceme smazat.
Modernější alternativa (v novějších prohlížečích) je metoda element.remove(), která odstraní daný prvek přímo.
Praktické příklady kódu
Příklad 1: Vytvoření a vložení nového odstavce
Příklad 2: Odstranění prvku
Příklad 3: Efektivní vložení více prvků pomocí DocumentFragment
Typické chyby / záludnosti
-
Vytvořený prvek se neobjeví na stránce
→ Musí být vložen pomocíappendChild()do existujícího elementu. SamotnécreateElement()nestačí. -
Zapomenutý rodič při mazání
→ MetodaremoveChild()vyžaduje rodičovský uzel. Pokud použijete jenelement.removeChild(), vyvolá chybu. (Modernějšíelement.remove()je jednodušší.) -
Zbytečné překreslování stránky
→ Při přidávání většího počtu prvků používejteDocumentFragment, jinak může být kód pomalý. -
Přepisování místo přidávání
→ Metody jakoinnerHTMLpřepíší obsah elementu, zatímcoappendChild()ho rozšíří.
Shrnutí
-
createElement("tag")– vytvoří nový HTML element. -
appendChild(element)– přidá nový prvek do rodiče. -
removeChild(element)– odstraní prvek z DOM. -
DocumentFragment– dočasná struktura pro hromadné a rychlé vkládání prvků. -
Vždy pracujeme s hierarchií: každý prvek musí mít svého rodiče, aby byl vidět na stránce.
Úloha
Zadání (kontext úlohy):
Vytvoř jednoduchou aplikaci, kde může uživatel přidávat nové položky do seznamu pomocí tlačítka „Přidat položku“. Každá nová položka se zobrazí jako řádek v seznamu. Po kliknutí na tlačítko „Vymazat poslední“ se odstraní poslední přidaná položka.
Cíl úlohy:
Procvičit si práci s metodami DOM – createElement(), appendChild() a removeChild(). Naučit se programově přidávat i mazat prvky na stránce.
Vstupní podmínky:
Student pracuje pouze s jedním HTML souborem.
JavaScript je vložen do <script> na konci stránky.
Položky se generují automaticky s číslováním („Položka 1“, „Položka 2“, …).
Požadovaný výstup:
-
Na stránce bude:
-
nadpis „Dynamický seznam“,
-
prázdný
<ul>element, -
dvě tlačítka: „Přidat položku“ a „Vymazat poslední“.
-
-
Po kliknutí na „Přidat položku“ se do seznamu přidá nová položka (
<li>) s postupným číslem. -
Po kliknutí na „Vymazat poslední“ se smaže poslední prvek seznamu.
-
Pokud už v seznamu žádné položky nejsou, mazací tlačítko zobrazí upozornění „Seznam je prázdný.“
Doplňující pokyny:
-
Použij
document.createElement()pro vytvoření nového<li>. -
Přidej nový prvek pomocí
appendChild(). -
Při mazání použij
removeChild()na rodičovský element. -
Zkontroluj délku seznamu pomocí
childElementCount. -
Číslování uchovávej v proměnné, kterou při každém přidání zvýšíš.
Řešení úlohy
Co je zde splněno
-
Použití createElement(), appendChild() a removeChild().
-
Přidávání položek s postupným číslováním.
-
Kontrola počtu prvků přes childElementCount.
-
Zobrazení upozornění při pokusu o smazání prázdného seznamu.
-
Vše funguje bez znovunačtení stránky.
Vylepšení oproti začátečnické verzi
-
Použití šipkových funkcí a inkrementace přímo v zápisu
++cislo. -
Přidána drobná kontrola s returnem místo vnořeného
if/elsepro čistší logiku. -
Přidáno základní CSS pro přehlednost.
-
Moderní a stručný styl zápisu vhodný pro praxi.
Poznámky
Pokud by student použil
innerHTML += ..., neprocvičil by práci s DOM uzly, proto se zde používá správný způsob screateElement()aappendChild().Lze přidat i reset počítadla po vymazání všech položek (není nutné pro základní úlohu).