Úloha 4 – Seznam úkolů s delegací událostí (toggle + delete
Úvod do úlohy
Když se webová stránka stane interaktivní, obvykle za tím stojí události (events). Každé kliknutí, pohyb myši, stisk klávesy nebo odeslání formuláře spouští v prohlížeči určitou událost. JavaScript nám umožňuje na tyto události reagovat pomocí posluchačů (event listeners). Díky nim dokážeme vytvořit tlačítka, která něco vykonají, validovat formuláře nebo dynamicky měnit obsah stránky podle uživatelského chování.
Znalost práce s událostmi patří mezi základní dovednosti každého webového vývojáře. A protože se v praxi s nimi setkáte na každém kroku, je důležité naučit se je používat správně, přehledně a efektivně.
Teorie a principy
Přidávání posluchačů událostí
Nejčastěji se události obsluhují metodou addEventListener(), která umožňuje připojit k prvku funkci, jež se spustí při výskytu určité akce.
Základní tvar:
Příklad – kliknutí na tlačítko:
Tento způsob je výhodný, protože:
-
umožňuje přidat více posluchačů na stejnou událost,
-
nezasahuje do HTML kódu (na rozdíl od atributu
onclick), -
odděluje logiku (JavaScript) od struktury (HTML).
Typy událostí
Nejběžnější události, se kterými se studenti setkají:
-
click – kliknutí myší
-
mouseover / mouseout – najetí a opuštění kurzoru
-
keydown / keyup – stisk a uvolnění klávesy
-
submit – odeslání formuláře
-
change / input – změna hodnoty ve formulářovém poli
Události se mohou vztahovat na libovolné elementy: tlačítka, odkazy, formuláře, obrázky i celé sekce stránky.
Delegace událostí
Když se na stránce nachází větší množství podobných prvků (např. desítky tlačítek nebo položky v seznamu), není efektivní připojovat posluchač ke každému zvlášť. Místo toho použijeme tzv. delegaci událostí.
Princip je jednoduchý:
-
posluchač připojíme k rodičovskému prvku,
-
pomocí vlastnosti
event.targetzjistíme, který potomek událost vyvolal.
Tato technika zjednodušuje kód a zvyšuje výkon – zejména při dynamicky vytvářeném obsahu.
Praktické příklady kódu
Příklad 1: Jednoduchá reakce na kliknutí
Co se děje:
Po kliknutí na tlačítko se spustí funkce, která změní text v odstavci.
Příklad 2: Zachycení odeslání formuláře
Co se děje:
Událost submit zachytí pokus o odeslání formuláře. Pomocí event.preventDefault() zabráníme obnovení stránky a místo toho provedeme vlastní akci (zobrazíme zprávu).
Příklad 3: Delegace událostí
Co se děje:
Namísto tří samostatných posluchačů má seznam jediný addEventListener(), který zpracovává kliknutí na kterékoliv <li>. Pomocí event.target zjistíme konkrétní prvek, který byl kliknutý.
Typické chyby / záludnosti
-
Chybějící
event.preventDefault()u formulářů
→ Bez něj se stránka po odeslání automaticky znovu načte a ztrácíme data. -
Záměna názvu události
→ Napříkladonclicknení totéž co"click". VaddEventListener()se vždy používá bez „on“. -
Nepřístupné elementy
→ Pokud JavaScript běží dříve, než jsou prvky načteny,getElementById()vrátínull. Řešením je vložit<script>až na konec<body>. -
Zapomenuté odstranění posluchače
→ U dynamicky vytvářených elementů je vhodné zvážit i odstranění posluchačů pomocíremoveEventListener(), aby nedocházelo k únikům paměti. -
Chybná práce s
event.target
→ V delegaci vždy kontrolujte, že kliknutý prvek je opravdu ten, na který chcete reagovat.
Shrnutí
-
addEventListener("typ", funkce)– přidává posluchač události. -
Pomocí
eventobjektu zjistíme informace o akci (např.event.target,event.type). -
event.preventDefault()– zamezí výchozímu chování (např. odeslání formuláře). -
Delegace událostí – posluchač připojený k rodiči zpracovává události potomků, což šetří výkon i kód.
-
Události umožňují webovým stránkám reagovat na uživatele v reálném čase – to je základ interaktivního webu.