Der Browser macht aus deiner HTML-Seite einen Baum aus Objekten, das DOM (Document Object Model). JavaScript kann diesen Baum lesen und verändern: Texte tauschen, Elemente hinzufügen, Stile setzen.
document
└─ html
├─ head
└─ body
├─ h1 "Titel"
└─ ul
├─ li "Eins"
└─ li "Zwei"Elemente finden
const titel = document.getElementById("titel"); // nach id
const erster = document.querySelector(".karte"); // erstes passendes Element (CSS-Selektor)
const alle = document.querySelectorAll("ul li"); // alle (NodeList)
const bilder = document.getElementsByTagName("img"); // nach TagMit querySelector und querySelectorAll nutzt du dieselben CSS-Selektoren wie im Stylesheet (#id, .klasse, tag, a[href^="https"], ul > li:first-child).
Texte und Inhalte ändern
Ergebnis
| Eigenschaft | Wirkung |
|---|---|
textContent | reiner Text (sicher) |
innerHTML | HTML als Text lesen/setzen (Vorsicht, siehe unten) |
value | Wert eines Eingabefelds |
id, className, href, src | HTML-Attribute als Eigenschaften |
Elemente erzeugen und einfügen
Ergebnis
| Methode | Wirkung |
|---|---|
document.createElement("div") | neues Element erzeugen |
parent.append(x), prepend(x) | hinten/vorn einfügen |
el.before(x), el.after(x) | vor/nach dem Element |
el.remove() | Element entfernen |
el.replaceWith(x) | ersetzen |
el.cloneNode(true) | tiefe Kopie |
el.insertAdjacentHTML(pos, html) | HTML an Position einfügen |
Navigieren im Baum
Ergebnis
Eigenschaften im Überblick
el.children,el.firstElementChild,el.lastElementChildel.parentElement,el.closest(selektor)(nächster passender Vorfahr)el.matches(selektor)prüft, ob ein Element zu einem Selektor passtel.getBoundingClientRect()liefert Position und Größe
Stile und Klassen
Ergebnis
classList.add/remove/toggle/contains/replaceist der beste Weg, Aussehen zu ändernel.style.eigenschaftsetzt einzelne Inline-Stile (camelCase:backgroundColor)- Mit
getComputedStyle(el)liest du die berechneten Werte
Attribute und data-*
Ergebnis
Wann läuft mein Skript?
Ein Skript kann nur auf Elemente zugreifen, die schon existieren. Setze <script> ans Ende von <body>, nutze defer (<script src="app.js" defer>) oder warte auf das Ereignis:
document.addEventListener("DOMContentLoaded", () => {
// DOM ist bereit
});Merke
- Das DOM ist der Objektbaum der Seite
querySelector(All)findet Elemente mit CSS-SelektorentextContentfür Text (sicher),innerHTMLnur mit vertrauenswürdigem HTMLcreateElement,append,removebauen die Seite umclassListunddatasetfür Klassen unddata-*-Attribute
Aufgabe
Baue eine Seite mit einer leeren Liste und einem Eingabefeld. Ein Klick auf einen Button hängt den eingegebenen Text als neuen Listeneintrag an.