Inhalte und Styles ändern
Nachdem Sie gelernt haben, wie man Elemente im DOM auswählt, ist der nächste Schritt, deren Inhalte und Erscheinungsbild dynamisch zu verändern. Dies ist ein zentraler Aspekt interaktiver Webseiten, da es Ihnen ermöglicht, auf Benutzeraktionen zu reagieren und die Benutzeroberfläche entsprechend anzupassen.
Textinhalte ändern
Abschnitt betitelt „Textinhalte ändern“Es gibt mehrere Möglichkeiten, den Textinhalt eines Elements zu ändern, mit leicht unterschiedlichen Ergebnissen:
textContent
Abschnitt betitelt „textContent“Diese Eigenschaft gibt den gesamten Textinhalt eines Elements zurück oder setzt ihn, einschliesslich aller verschachtelten Elemente, aber als reinen Text ohne HTML-Interpretation:
const überschrift = document.querySelector("h1");
// Textinhalt lesenconsole.log(überschrift.textContent);
// Textinhalt setzenüberschrift.textContent = "Neuer Titel";
// HTML-Tags werden als Text behandelt, nicht als Markupüberschrift.textContent = "Titel mit <em>Betonung</em>";// Erscheint als: "Titel mit <em>Betonung</em>"innerHTML
Abschnitt betitelt „innerHTML“Mit innerHTML können Sie den HTML-Inhalt eines Elements lesen oder setzen. HTML-Tags werden dabei interpretiert:
const absatz = document.querySelector("p");
// HTML-Inhalt lesenconsole.log(absatz.innerHTML);
// HTML-Inhalt setzenabsatz.innerHTML = "Dieser Text enthält <strong>fett</strong> und <em>kursiv</em> formatierte Wörter.";Sicherheitshinweis: Verwenden Sie innerHTML mit Vorsicht, besonders mit benutzergenerierten Inhalten, da es zu Cross-Site-Scripting (XSS) führen kann. Für reine Textänderungen ist textContent sicherer.
innerText
Abschnitt betitelt „innerText“Eine weitere Option ist innerText, die den sichtbaren Text eines Elements zurückgibt:
const absatz = document.querySelector("p");
// Nur sichtbaren Text lesenconsole.log(absatz.innerText);
// Text setzenabsatz.innerText = "Neuer Text";innerText berücksichtigt im Gegensatz zu textContent die CSS-Formatierung und gibt nur den Text zurück, der tatsächlich für den Benutzer sichtbar ist.
HTML-Struktur verändern
Abschnitt betitelt „HTML-Struktur verändern“Elemente ersetzen
Abschnitt betitelt „Elemente ersetzen“Sie können ein Element vollständig durch ein anderes ersetzen:
const altesElement = document.querySelector(".alt");const neuesElement = document.createElement("div");neuesElement.textContent = "Ich bin das neue Element";neuesElement.className = "neu";
if (altesElement && altesElement.parentNode) { altesElement.parentNode.replaceChild(neuesElement, altesElement);}Inhalte leeren
Abschnitt betitelt „Inhalte leeren“Um alle Inhalte eines Elements zu entfernen:
// Mit innerHTML (einfach, aber weniger effizient)element.innerHTML = "";
// Mit removeChild (effizienter)while (element.firstChild) { element.removeChild(element.firstChild);}Mit Attributen arbeiten
Abschnitt betitelt „Mit Attributen arbeiten“Attribute bieten zusätzliche Informationen über HTML-Elemente und können ebenfalls mit JavaScript manipuliert werden:
Standard-Attribute
Abschnitt betitelt „Standard-Attribute“const link = document.querySelector("a");
// Attribute lesenconsole.log(link.href);console.log(link.title);console.log(link.id);
// Attribute setzenlink.href = "https://example.com";link.title = "Besuchen Sie Example.com";link.target = "_blank";HTML5 data-Attribute
Abschnitt betitelt „HTML5 data-Attribute“HTML5 führte data-*-Attribute ein, die benutzerdefinierte Daten speichern können:
<div id="produkt" data-id="1234" data-kategorie="elektronik" data-preis="99.99"> Smartphone XYZ</div>Zugriff über die dataset-Eigenschaft:
const produkt = document.getElementById("produkt");
// Data-Attribute lesenconsole.log(produkt.dataset.id); // "1234"console.log(produkt.dataset.kategorie); // "elektronik"console.log(produkt.dataset.preis); // "99.99"
// Data-Attribute setzenprodukt.dataset.verfügbar = "ja";produkt.dataset.rabatt = "10%";Attribute mit setAttribute und getAttribute
Abschnitt betitelt „Attribute mit setAttribute und getAttribute“Für allgemeinere Attributmanipulation können Sie diese Methoden verwenden:
const bild = document.querySelector("img");
// Attribut lesenconsole.log(bild.getAttribute("alt"));
// Attribut setzenbild.setAttribute("alt", "Beschreibung des Bildes");bild.setAttribute("loading", "lazy");
// Prüfen, ob Attribut existiertif (bild.hasAttribute("src")) { console.log("Bild hat eine Quelle");}
// Attribut entfernenbild.removeAttribute("width");CSS-Styles ändern
Abschnitt betitelt „CSS-Styles ändern“Es gibt mehrere Wege, das Aussehen von Elementen mit JavaScript zu verändern:
Inline-Styles mit style-Eigenschaft
Abschnitt betitelt „Inline-Styles mit style-Eigenschaft“Die direkteste Methode ist die Verwendung der style-Eigenschaft:
const box = document.querySelector(".box");
// Einzelne Stileigenschaftenbox.style.backgroundColor = "lightblue";box.style.width = "200px";box.style.padding = "20px";box.style.borderRadius = "10px";box.style.boxShadow = "2px 2px 5px rgba(0,0,0,0.2)";
// Mehrere Stile auf einmal mit cssText (überschreibt bestehende inline-Styles)box.style.cssText = "color: white; background-color: navy; padding: 15px;";Hinweis: CSS-Eigenschaften mit Bindestrichen werden in JavaScript in camelCase geschrieben:
background-color→backgroundColorfont-size→fontSizeborder-radius→borderRadius
CSS-Klassen verwalten
Abschnitt betitelt „CSS-Klassen verwalten“Eine sauberere Methode ist die Verwendung von CSS-Klassen, die Sie in Ihrem Stylesheet definieren und dann mit JavaScript hinzufügen oder entfernen:
const element = document.querySelector(".meinElement");
// Klasse hinzufügenelement.classList.add("highlight");
// Mehrere Klassen hinzufügenelement.classList.add("gross", "wichtig");
// Klasse entfernenelement.classList.remove("alt");
// Klasse umschalten (toggle)element.classList.toggle("aktiv"); // Fügt die Klasse hinzu, wenn sie fehlt, entfernt sie, wenn sie vorhanden ist
// Prüfen, ob eine Klasse vorhanden istif (element.classList.contains("highlight")) { console.log("Element ist hervorgehoben");}
// Eine Klasse durch eine andere ersetzenelement.classList.replace("alt", "neu");Berechnete Stile abrufen
Abschnitt betitelt „Berechnete Stile abrufen“Manchmal müssen Sie wissen, welche Stile aktuell auf ein Element angewendet werden:
const element = document.querySelector(".meinElement");const computedStyle = window.getComputedStyle(element);
console.log(computedStyle.backgroundColor);console.log(computedStyle.fontSize);console.log(computedStyle.marginTop);
// Pseudo-Elementeconst beforeStyle = window.getComputedStyle(element, "::before");console.log(beforeStyle.content);CSS-Variablen (Custom Properties) ändern
Abschnitt betitelt „CSS-Variablen (Custom Properties) ändern“CSS-Variablen können mit JavaScript geändert werden, was besonders mächtig ist, da sie sich auf die gesamte Seite auswirken können:
// CSS-Variable auf :root setzen (gilt für die ganze Seite)document.documentElement.style.setProperty('--main-color', 'blue');
// CSS-Variable auf einem bestimmten Element setzenconst header = document.querySelector("header");header.style.setProperty('--header-height', '100px');
// CSS-Variablen lesenconst mainColor = getComputedStyle(document.documentElement) .getPropertyValue('--main-color');console.log("Hauptfarbe:", mainColor);Übung: Inhalte und Styles dynamisch ändern
Abschnitt betitelt „Übung: Inhalte und Styles dynamisch ändern“Zusammenfassung
Abschnitt betitelt „Zusammenfassung“- Sie können den Textinhalt eines Elements mit
textContent,innerHTMLoderinnerTextändern - Attribute können mit direkten Eigenschaften oder
setAttribute/getAttributemanipuliert werden - Data-Attribute sind über die
dataset-Eigenschaft zugänglich - Styles können über
style, CSS-Klassen oder CSS-Variablen geändert werden - CSS-Klassen sind oft eine sauberere Alternative zu direkten Stiländerungen
Mit diesen Techniken können Sie dynamische, interaktive Webseiten erstellen, die auf Benutzeraktionen reagieren und sich an verschiedene Situationen anpassen. Im nächsten Kapitel lernen wir, wie wir mit Events arbeiten, um auf Benutzerinteraktionen zu reagieren.