Elemente auswählen und bearbeiten
Nachdem wir verstanden haben, was das DOM ist, lernen wir nun, wie wir einzelne Elemente im DOM auswählen und bearbeiten können. Diese Fähigkeit ist grundlegend für jede Art von JavaScript-Interaktion auf Webseiten.
Elemente im DOM auswählen
Abschnitt betitelt „Elemente im DOM auswählen“Es gibt verschiedene Methoden, um Elemente im DOM zu finden. Jede hat ihre eigenen Vor- und Nachteile und eignet sich für unterschiedliche Situationen.
Auswahl nach ID
Abschnitt betitelt „Auswahl nach ID“Die schnellste Methode, um ein einzelnes Element zu finden, ist über seine ID. Da IDs eindeutig sein sollten, liefert diese Methode immer nur ein Element zurück.
// HTML: <div id="hauptContainer">Inhalt</div>let container = document.getElementById("hauptContainer");Auswahl nach Klasse
Abschnitt betitelt „Auswahl nach Klasse“Um alle Elemente mit einer bestimmten Klasse zu finden, nutzen Sie getElementsByClassName. Diese Methode gibt eine HTMLCollection zurück (ähnlich einem Array).
// HTML: <p class="highlight">Text 1</p> <p class="highlight">Text 2</p>let highlightedElements = document.getElementsByClassName("highlight");
// Durch die Elemente iterierenfor (let i = 0; i < highlightedElements.length; i++) { console.log(highlightedElements[i].textContent);}Auswahl nach Tag-Namen
Abschnitt betitelt „Auswahl nach Tag-Namen“Um alle Elemente eines bestimmten Typs zu finden, verwenden Sie getElementsByTagName.
// Alle Absätze auswählenlet paragraphs = document.getElementsByTagName("p");
// Alle Bilder auswählenlet images = document.getElementsByTagName("img");Auswahl mit CSS-Selektoren
Abschnitt betitelt „Auswahl mit CSS-Selektoren“Die vielseitigsten Methoden sind querySelector und querySelectorAll. Mit ihnen können Sie CSS-Selektoren verwenden, um Elemente auszuwählen.
// Das erste Element mit der Klasse "highlight"let firstHighlight = document.querySelector(".highlight");
// Alle Elemente mit der Klasse "highlight"let allHighlights = document.querySelectorAll(".highlight");
// Das erste Bild innerhalb eines Artikelslet imageInArticle = document.querySelector("article img");
// Alle Links in der Navigationlet navLinks = document.querySelectorAll("nav a");
// Element mit einer bestimmten IDlet header = document.querySelector("#header");
// Kombinierte Selektorenlet specialItems = document.querySelectorAll("ul.special-list li:not(.excluded)");Mit querySelector bekommen Sie immer nur das erste passende Element, während querySelectorAll alle passenden Elemente in einer NodeList zurückgibt.
Unterschied zwischen HTMLCollection und NodeList
Abschnitt betitelt „Unterschied zwischen HTMLCollection und NodeList“Die verschiedenen Auswahlmethoden geben unterschiedliche Typen von Sammlungen zurück:
- HTMLCollection (von
getElementsBy...): Live-Sammlung, die sich automatisch aktualisiert, wenn sich das DOM ändert - NodeList (von
querySelectorAll): Statische Sammlung, die sich nicht automatisch aktualisiert
Elemente innerhalb anderer Elemente finden
Abschnitt betitelt „Elemente innerhalb anderer Elemente finden“Sie können die Suche auf einen Teilbereich des DOM beschränken, indem Sie die Auswahlmethoden auf einem Element statt auf document aufrufen:
// Erst die Fusszeile findenlet footer = document.querySelector("footer");
// Dann nur Links innerhalb der Fusszeile auswählenlet footerLinks = footer.querySelectorAll("a");Durch Elementsammlungen iterieren
Abschnitt betitelt „Durch Elementsammlungen iterieren“Nachdem Sie eine Sammlung von Elementen erhalten haben, müssen Sie häufig durch diese iterieren, um mit jedem Element zu arbeiten.
Mit for-Schleife
Abschnitt betitelt „Mit for-Schleife“let items = document.querySelectorAll(".item");
for (let i = 0; i < items.length; i++) { console.log(items[i].textContent);}Mit for…of-Schleife (moderner)
Abschnitt betitelt „Mit for…of-Schleife (moderner)“let items = document.querySelectorAll(".item");
for (let item of items) { console.log(item.textContent);}Mit forEach (nur für NodeList)
Abschnitt betitelt „Mit forEach (nur für NodeList)“let items = document.querySelectorAll(".item"); // NodeList
items.forEach(item => { console.log(item.textContent);});Beachten Sie, dass forEach nur für NodeList verfügbar ist, nicht für HTMLCollection. Bei Bedarf können Sie eine HTMLCollection in ein Array umwandeln:
let elements = document.getElementsByClassName("item"); // HTMLCollectionlet elementsArray = Array.from(elements);
elementsArray.forEach(element => { console.log(element.textContent);});Wichtige Eigenschaften von DOM-Elementen
Abschnitt betitelt „Wichtige Eigenschaften von DOM-Elementen“Nachdem Sie ein Element ausgewählt haben, können Sie auf verschiedene Eigenschaften zugreifen und diese verändern.
Textinhalt
Abschnitt betitelt „Textinhalt“// Textinhalt lesenlet message = document.getElementById("nachricht").textContent;
// Textinhalt setzendocument.getElementById("nachricht").textContent = "Neuer Text";HTML-Inhalt
Abschnitt betitelt „HTML-Inhalt“// HTML-Inhalt lesenlet content = document.getElementById("inhalt").innerHTML;
// HTML-Inhalt setzen (vorsichtig verwenden wegen Cross-Site-Scripting-Risiken)document.getElementById("inhalt").innerHTML = "<strong>Wichtige Nachricht</strong>";Attribute
Abschnitt betitelt „Attribute“// Attributwerte lesenlet imageUrl = document.getElementById("hauptBild").src;let linkTarget = document.getElementById("meinLink").href;let inputType = document.getElementById("suchfeld").type;
// Attribute setzendocument.getElementById("hauptBild").src = "neue-bild.jpg";document.getElementById("meinLink").href = "https://www.beispiel.com";document.getElementById("suchfeld").placeholder = "Suchen...";Klassenlisten und -manipulation
Abschnitt betitelt „Klassenlisten und -manipulation“Die classList-Eigenschaft bietet Methoden zum Arbeiten mit Klassen:
let element = document.getElementById("meinElement");
// Klassen hinzufügenelement.classList.add("highlight");
// Klassen entfernenelement.classList.remove("versteckt");
// Klasse umschalten (hinzufügen, wenn nicht vorhanden, entfernen, wenn vorhanden)element.classList.toggle("erweitert");
// Prüfen, ob eine Klasse vorhanden istif (element.classList.contains("aktiv")) { console.log("Element ist aktiv");}
// Mehrere Klassen hinzufügen oder entfernenelement.classList.add("gross", "wichtig", "hervorgehoben");element.classList.remove("klein", "nebensächlich");Inline-Stile
Abschnitt betitelt „Inline-Stile“let box = document.querySelector(".box");
// Einzelne Stileigenschaften setzenbox.style.backgroundColor = "lightblue";box.style.width = "200px";box.style.padding = "10px";box.style.borderRadius = "5px";
// Alle Inline-Stile auf einmal setzen (überschreibt vorhandene)box.style.cssText = "background-color: lightblue; width: 200px; padding: 10px;";
// Zugriff auf den berechneten Stil (nur lesen)let computedStyle = window.getComputedStyle(box);console.log("Tatsächliche Breite:", computedStyle.width);Beachten Sie, dass CSS-Eigenschaften mit Bindestrichen in JavaScript in camelCase geschrieben werden (background-color wird zu backgroundColor).
Element-Eigenschaften und -Dimensionen
Abschnitt betitelt „Element-Eigenschaften und -Dimensionen“Position und Grösse auslesen
Abschnitt betitelt „Position und Grösse auslesen“let element = document.getElementById("meinElement");let rect = element.getBoundingClientRect();
console.log("Position vom Viewport-Rand:", rect.left, rect.top);console.log("Elementgrösse:", rect.width, rect.height);Fensterdimensionen
Abschnitt betitelt „Fensterdimensionen“// Sichtbarer Bereich (Viewport)let viewportWidth = window.innerWidth;let viewportHeight = window.innerHeight;
// Gesamte Dokumentgrösse (inkl. scrollbare Bereiche)let documentWidth = document.documentElement.scrollWidth;let documentHeight = document.documentElement.scrollHeight;Scroll-Position
Abschnitt betitelt „Scroll-Position“// Aktuelle Scroll-Positionlet scrollX = window.scrollX || window.pageXOffset;let scrollY = window.scrollY || window.pageYOffset;
// Zu einer bestimmten Position scrollenwindow.scrollTo(0, 500); // 500px von oben
// Sanft scrollen (moderner Browser)window.scrollTo({ top: 500, behavior: "smooth"});
// Zu einem Element scrollendocument.getElementById("zielElement").scrollIntoView({behavior: "smooth"});Übung: Elemente auswählen und bearbeiten
Abschnitt betitelt „Übung: Elemente auswählen und bearbeiten“Zusammenfassung
Abschnitt betitelt „Zusammenfassung“Es gibt verschiedene Methoden zum Auswählen von DOM-Elementen:
getElementById()für einzelne Elemente mit einer bestimmten IDgetElementsByClassName()für Elemente mit einer bestimmten KlassegetElementsByTagName()für Elemente eines bestimmten TypsquerySelector()undquerySelectorAll()für flexible Auswahl mit CSS-Selektoren
Nach der Auswahl können Sie mit den Elementen arbeiten durch:
- Zugriff auf und Änderung von Textinhalten mit
textContentoderinnerHTML - Manipulation von Attributen direkt oder mit
getAttribute()undsetAttribute() - Verwaltung von Klassen mit
classList-Methoden - Änderung von Stilen über die
style-Eigenschaft - Um mit Elementsammlungen zu arbeiten, können Sie:
for-Schleifenfor...of-SchleifenforEach-Methode (für NodeList oder nach Konvertierung in ein Array)
Die Fähigkeit, Elemente auszuwählen und zu bearbeiten, ist der Grundstein für interaktive Webseiten. Im nächsten Kapitel werden wir lernen, wie wir Inhalte und Styles gezielt ändern können, um noch mehr Dynamik zu ermöglichen.