<h1 id="titel">Willkommen</h1>
In der Konsole siehst du das gefundene Element-Objekt – nicht nur den Text „Willkommen“.
Mit DOM-Manipulation änderst du die Webseite per JavaScript: Elemente finden, Inhalte anpassen, Attribute setzen und neue Elemente erzeugen – alles ohne die Seite neu zu laden.
Bevor du etwas ändern kannst, musst du das Element im DOM finden. Dafür gibt es mehrere Methoden. Am häufigsten nutzt du getElementById, querySelector und querySelectorAll.
Ausgangspunkt für die folgenden Beispiele:
1<h1 id="titel">Willkommen</h1>
2<button class="btn">Klick mich</button>
3<p class="text">Erster Absatz</p>
4<p class="text">Zweiter Absatz</p>Mit getElementById suchst du ein Element über seine id. Die id muss auf der Seite eindeutig sein – deshalb eignet sich die Methode gut für einzelne, wichtige Elemente.
Du übergibst nur den Namen der id – ohne #.
1const titel = document.getElementById("titel");
2console.log(titel);<h1 id="titel">Willkommen</h1>
In der Konsole siehst du das gefundene Element-Objekt – nicht nur den Text „Willkommen“.
querySelector findet das erste Element, das zu einem CSS-Selektor passt. Du kannst Tag-Namen, Klassen, IDs und komplexere Selektoren nutzen – genau wie in CSS.
"p" → erstes Absatz-Element".btn" → erstes Element mit der Klasse btn"#titel" → Element mit der ID titel"nav a" → erster Link innerhalb von nav1// erstes Element mit der Klasse .btn
2const button = document.querySelector(".btn");
3
4// erstes <p>-Element
5const ersterAbsatz = document.querySelector("p");
6
7// Element mit id="titel" (wie getElementById)
8const titel = document.querySelector("#titel");
9
10console.log(button);
11console.log(ersterAbsatz);<button class="btn">Klick mich</button> <p class="text">Erster Absatz</p>
Gibt es mehrere passende Elemente, liefert querySelector immer nur das erste.
querySelectorAll findet alle Elemente, die zum Selektor passen. Das Ergebnis ist eine Liste (NodeList). Darauf kannst du z. B. mit forEach zugreifen.
1const alleAbsaetze = document.querySelectorAll("p");
2const alleTexte = document.querySelectorAll(".text");
3
4console.log(alleAbsaetze.length);
5
6alleAbsaetze.forEach((absatz) => {
7 console.log(absatz.textContent);
8});2 Erster Absatz Zweiter Absatz
length zeigt, wie viele Elemente gefunden wurden. Mit forEach gehst du jedes Element einzeln durch.
Existiert das gesuchte Element nicht, geben getElementById und querySelector den Wert null zurück. querySelectorAll liefert dann eine leere Liste.
1const fehlt = document.getElementById("gibt-es-nicht");
2console.log(fehlt);
3
4const auchFehlt = document.querySelector(".unbekannt");
5console.log(auchFehlt);null null
Wenn du danach z. B. fehlt.textContent aufrufst, kommt ein Fehler. Prüfe deshalb bei Bedarf zuerst, ob das Element wirklich gefunden wurde.
Mit textContent setzt du reinen Text. Mit innerHTML kannst du auch HTML einfügen.
1const titel = document.getElementById("titel");
2
3titel.textContent = "Neuer Titel";
4titel.innerHTML = "<em>Neuer Titel</em>";textContent → Neuer Titel
innerHTML → Neuer Titel (kursiv, weil das <em>-Tag gerendert wird)
Mit setAttribute und getAttribute liest und schreibst du Attribute wie href, src oder alt.
1const link = document.querySelector("a");
2
3link.setAttribute("href", "https://example.com");
4link.setAttribute("target", "_blank");
5
6console.log(link.getAttribute("href"));https://example.com
Der Link zeigt danach auf die neue Adresse und öffnet sich in einem neuen Tab (target="_blank").
Mit createElement erzeugst du ein neues Element und hängst es mit appendChild an ein bestehendes Element an.
1const liste = document.querySelector("ul");
2const eintrag = document.createElement("li");
3
4eintrag.textContent = "Neuer Eintrag";
5liste.appendChild(eintrag);Am Ende der Liste erscheint der neue Eintrag Neuer Eintrag.
Mit remove() löschst du ein Element aus dem DOM.
1const hinweis = document.querySelector(".hinweis");
2
3hinweis.remove();Das Element mit der Klasse hinweis verschwindet von der Seite.
getElementById → ein Element über die idquerySelector → erstes Element per CSS-SelektorquerySelectorAll → alle passenden ElementetextContent / innerHTML → Inhalte ändernsetAttribute → Attribute setzencreateElement + appendChild → neue Elemente erzeugenremove() → Elemente entfernenIm nächsten Kapitel lernst du: Variablen und Konstanten