Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| de:modul:m291:learningunits:lu04:theorie:a_dom [2026/03/01 18:24] – angelegt gkoch | de:modul:m291:learningunits:lu04:theorie:a_dom [2026/03/01 22:13] (aktuell) – gkoch | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== DOM ====== | + | ====== |
| + | |||
| + | |||
| + | ===== Was ist das DOM? ===== | ||
| + | |||
| + | Das DOM ist die Art und Weise, wie JavaScript Ihr HTML-Dokument «sieht». Es repräsentiert die gesamte Seite als einen **Baum aus Objekten**. Jedes HTML-Element wird zu einem Objekt, das Sie lesen und verändern können. | ||
| + | |||
| + | > **Einfach erklärt:** HTML schreiben Sie als Text. Das DOM ist die «lebendige» Version davon – eine Datenstruktur, | ||
| + | |||
| + | ==== Der DOM-Baum ==== | ||
| + | |||
| + | Jede Verschachtelung in HTML wird im DOM zu einer Eltern-Kind-Beziehung: | ||
| + | <WRAP round center box 60%> | ||
| + | < | ||
| + | document | ||
| + | └── < | ||
| + | ├── < | ||
| + | │ | ||
| + | └── < | ||
| + | ├── < | ||
| + | │ | ||
| + | └── < | ||
| + | └── < | ||
| + | └── <p> "Hallo Welt" | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Elemente auswählen ===== | ||
| + | |||
| + | Um ein Element zu verändern, müssen Sie es zuerst «abholen»: | ||
| + | |||
| + | <WRAP round center box 80%> | ||
| + | ^ Methode ^ Beschreibung ^ Hinweis ^ | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | | '' | ||
| + | |||
| + | <code javascript> | ||
| + | // Ein einzelnes Element holen | ||
| + | const btn = document.querySelector('# | ||
| + | const logo = document.getElementById(' | ||
| + | |||
| + | // Mehrere Elemente ansprechen | ||
| + | const allePanels = document.querySelectorAll(' | ||
| + | |||
| + | // Mit NodeList arbeiten (forEach) | ||
| + | allePanels.forEach(panel => { | ||
| + | panel.classList.add(' | ||
| + | }); | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ===== Elemente verändern ===== | ||
| + | |||
| + | ==== classList ==== | ||
| + | |||
| + | Die sauberste Methode für Style-Änderungen – Sie definieren den Stil im CSS und schalten die Klasse per JS: | ||
| + | <WRAP round center box 60%> | ||
| + | <code javascript> | ||
| + | const panel = document.querySelector(' | ||
| + | |||
| + | panel.classList.add(' | ||
| + | panel.classList.remove(' | ||
| + | panel.classList.toggle(' | ||
| + | panel.classList.contains(' | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Attribute setzen und lesen ==== | ||
| + | <WRAP round center box 60%> | ||
| + | <code javascript> | ||
| + | // Attribut setzen | ||
| + | btn.setAttribute(' | ||
| + | |||
| + | // Attribut lesen | ||
| + | btn.getAttribute(' | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== Elemente ein- und ausblenden ==== | ||
| + | |||
| + | Die eleganteste Methode: den Zustand im CSS definieren und per JS die Klasse togglen. | ||
| + | <WRAP round center box 60%> | ||
| + | <code css> | ||
| + | /* CSS: standardmässig versteckt */ | ||
| + | .panel { | ||
| + | display: none; | ||
| + | } | ||
| + | |||
| + | /* CSS: sichtbar wenn Klasse ' | ||
| + | .panel.open { | ||
| + | display: block; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | <code javascript> | ||
| + | // JS: Klasse togglen | ||
| + | const panel = document.querySelector(' | ||
| + | panel.classList.toggle(' | ||
| + | </ | ||
| + | |||
| + | </ | ||