Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:m291:learningunits:lu04:theorie:b_events [2026/03/01 21:39] – gkoch | de:modul:m291:learningunits:lu04:theorie:b_events [2026/03/05 07:40] (aktuell) – gkoch | ||
|---|---|---|---|
| Zeile 6: | Zeile 6: | ||
| Ein **Event** ist ein Signal, das der Browser aussendet, wenn etwas passiert – ein Klick, eine Tastatureingabe, | Ein **Event** ist ein Signal, das der Browser aussendet, wenn etwas passiert – ein Klick, eine Tastatureingabe, | ||
| + | <WRAP box round center 80%> | ||
| <code javascript> | <code javascript> | ||
| const btn = document.querySelector('# | const btn = document.querySelector('# | ||
| Zeile 13: | Zeile 14: | ||
| }); | }); | ||
| </ | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP round center box 60%> | ||
| + | {{ youtube> | ||
| + | //Video zum Thema Events und Eventlisteners// | ||
| + | </ | ||
| - | <WRAP tip> | + | < |
| **Verbindung zum Alarado-Projekt: | **Verbindung zum Alarado-Projekt: | ||
| </ | </ | ||
| Zeile 22: | Zeile 29: | ||
| ==== Allgemeine Interaktion ==== | ==== Allgemeine Interaktion ==== | ||
| + | <WRAP box round center 80%> | ||
| ^ Event ^ Wann? ^ Einsatz ^ | ^ Event ^ Wann? ^ Einsatz ^ | ||
| | '' | | '' | ||
| Zeile 31: | Zeile 38: | ||
| | '' | | '' | ||
| | '' | | '' | ||
| + | </ | ||
| + | <WRAP box round center 80%> | ||
| <code javascript> | <code javascript> | ||
| // Tastatur: Escape schliesst ein Element | // Tastatur: Escape schliesst ein Element | ||
| Zeile 46: | Zeile 54: | ||
| }); | }); | ||
| </ | </ | ||
| + | </ | ||
| ===== Pointer Events (moderner Standard) ===== | ===== Pointer Events (moderner Standard) ===== | ||
| Pointer Events sind der **aktuelle Standard** für alle Zeigereingaben. Sie decken Maus, Touchscreen und Stift mit einem einzigen Event-System ab – und ersetzen damit die älteren separaten Maus- und Touch-Events. | Pointer Events sind der **aktuelle Standard** für alle Zeigereingaben. Sie decken Maus, Touchscreen und Stift mit einem einzigen Event-System ab – und ersetzen damit die älteren separaten Maus- und Touch-Events. | ||
| + | <WRAP box round center 80%> | ||
| ^ Event ^ Wann? ^ | ^ Event ^ Wann? ^ | ||
| | '' | | '' | ||
| Zeile 58: | Zeile 67: | ||
| | '' | | '' | ||
| | '' | | '' | ||
| + | </ | ||
| - | ==== Wichtige Eigenschaften des Event-Objekts ==== | ||
| - | |||
| - | ^ Eigenschaft ^ Beschreibung ^ | ||
| - | | '' | ||
| - | | '' | ||
| - | | '' | ||
| - | | '' | ||
| - | | '' | ||
| ==== Beispiel: Hover und Klick mit Pointer Events ==== | ==== Beispiel: Hover und Klick mit Pointer Events ==== | ||
| + | <WRAP box round center 60%> | ||
| <code javascript> | <code javascript> | ||
| const box = document.querySelector(' | const box = document.querySelector(' | ||
| Zeile 92: | Zeile 94: | ||
| }); | }); | ||
| </ | </ | ||
| + | </ | ||
| - | <WRAP important> | + | < |
| **Ältere Alternativen: | **Ältere Alternativen: | ||
| </ | </ | ||
| + | <WRAP round center 60% info> | ||
| + | Eine vertiefte Beschreibung von Events mit interaktiven Code-Beispielen finden Sie hier: [[https:// | ||
| + | </ | ||
| ===== Das Event-Objekt ===== | ===== Das Event-Objekt ===== | ||
| Alle Handler erhalten automatisch ein **Event-Objekt** als Parameter: | Alle Handler erhalten automatisch ein **Event-Objekt** als Parameter: | ||
| + | <WRAP box round center 80%> | ||
| ^ Eigenschaft / Methode ^ Beschreibung ^ | ^ Eigenschaft / Methode ^ Beschreibung ^ | ||
| | '' | | '' | ||
| Zeile 115: | Zeile 121: | ||
| }); | }); | ||
| </ | </ | ||
| + | </ | ||
| ===== State – Zustand im UI ===== | ===== State – Zustand im UI ===== | ||
| Zeile 122: | Zeile 128: | ||
| Das Muster kennen Sie bereits vom Toggle: | Das Muster kennen Sie bereits vom Toggle: | ||
| + | <WRAP box round center 60%> | ||
| ^ Zustand ^ Klasse gesetzt? ^ '' | ^ Zustand ^ Klasse gesetzt? ^ '' | ||
| | geschlossen | '' | | geschlossen | '' | ||
| | offen | '' | | offen | '' | ||
| + | </ | ||
| ==== State aus dem DOM lesen ==== | ==== State aus dem DOM lesen ==== | ||
| Sie können den Zustand direkt aus dem DOM ablesen, ohne eine eigene Variable zu führen: | Sie können den Zustand direkt aus dem DOM ablesen, ohne eine eigene Variable zu führen: | ||
| + | <WRAP box round center 80%> | ||
| <code javascript> | <code javascript> | ||
| const panel = document.querySelector(' | const panel = document.querySelector(' | ||
| Zeile 147: | Zeile 154: | ||
| }); | }); | ||
| </ | </ | ||
| + | </ | ||
| - | ==== Alle anderen Panels schliessen ==== | ||
| - | Bei einem klassischen Accordion soll immer nur ein Panel offen sein: | ||
| - | |||
| - | <code javascript> | ||
| - | const buttons = document.querySelectorAll(' | ||
| - | |||
| - | buttons.forEach(btn => { | ||
| - | btn.addEventListener(' | ||
| - | const panel = btn.nextElementSibling; | ||
| - | const istOffen = panel.classList.contains(' | ||
| - | |||
| - | // Alle Panels schliessen | ||
| - | buttons.forEach(andererBtn => { | ||
| - | andererBtn.nextElementSibling.classList.remove(' | ||
| - | andererBtn.setAttribute(' | ||
| - | }); | ||
| - | |||
| - | // Dieses Panel öffnen (nur wenn es vorher zu war) | ||
| - | if (!istOffen) { | ||
| - | panel.classList.add(' | ||
| - | btn.setAttribute(' | ||
| - | } | ||
| - | }); | ||
| - | }); | ||
| - | </ | ||