====== LU01e - DOM ======
Der Document Object Model (DOM) ist eine Programmierschnittstelle für HTML und XML-Dokumente. Es stellt das Dokument als Baumstruktur dar, bei dem jedes Element (wie ein HTML-Tag) ein Knoten ist. Durch den DOM können wir auf HTML-Elemente zugreifen und sie dynamisch mit JavaScript verändern. Jedes HTML-Element kann als ein Objekt betrachtet werden, das verschiedene Eigenschaften und Methoden hat, mit denen man es verändern kann.
===== Zugriff auf DOM-Elemente =====
Um DOM-Elemente zu modifizieren, müssen wir zuerst auf sie zugreifen. Dies geschieht meist über die Methode document in JavaScript.
**getElementById()** Diese Methode wird verwendet, um ein Element anhand seiner id-Eigenschaft auszuwählen. Jede ID im HTML-Dokument muss einzigartig sein.
const element = document.getElementById("meinElement");
**getElementsByClassName()** Diese Methode wählt alle Elemente aus, die eine bestimmte Klasse haben. Es gibt eine Sammlung (Array-ähnlich) von Elementen zurück.
const elements = document.getElementsByClassName("meineKlasse");
**querySelector() und querySelectorAll()** Diese Methoden erlauben eine flexible Auswahl von DOM-Elementen mittels CSS-Selektoren. querySelector() gibt das erste passende Element zurück, während querySelectorAll() eine Liste aller passenden Elemente liefert.
const element = document.querySelector(".meineKlasse #meinElement");
===== Modifizieren von DOM-Elementen =====
==== Ändern von Inhalten ====
Um den Text oder HTML-Inhalt eines Elements zu ändern, gibt es zwei Hauptmethoden:
**textContent** Verändert den reinen Text eines Elements, ohne HTML-Tags zu interpretieren.
document.getElementById("meinElement").textContent = "Neuer Text";
**innerHTML** Erlaubt das Setzen von HTML-Inhalten innerhalb eines Elements.
document.getElementById("meinElement").innerHTML = "Fetter Text";
==== Ändern von Attributen ====
Mit der Methode setAttribute() können wir Attribute von HTML-Elementen ändern. Zum Beispiel, um das src-Attribut eines Bildes zu ändern:
document.getElementById("meinBild").setAttribute("src", "neuesBild.jpg");
Ebenso können wir das class- oder id-Attribut eines Elements ändern:
document.getElementById("meinElement").setAttribute("class", "neueKlasse");
==== CSS-Stile ändern ====
Mit der Eigenschaft style können wir die CSS-Stile eines Elements direkt in JavaScript verändern.
document.getElementById("meinElement").style.backgroundColor = "blue";
Mann kann so ziemlich jeden CSS-Stil über JavaScript ändern. Wichtig: In JavaScript werden mehrteilige CSS-Eigenschaften wie background-color in Kamel-Schreibweise (camelCase) geschrieben, also backgroundColor.
==== Elemente hinzufügen und entfernen ====
Um ein neues Element in den DOM einzufügen, nutzt man die Methode createElement() und anschließend appendChild(), um das Element an eine bestehende Struktur anzuhängen.
const neuesElement = document.createElement("p");
neuesElement.textContent = "Dies ist ein neuer Absatz.";
document.body.appendChild(neuesElement);
Um ein Element zu entfernen, nutzt man removeChild():
const element = document.getElementById("meinElement");
element.parentNode.removeChild(element);
===== Ereignisse (Events) und Funktionen mit Buttons auslösen =====
DOM-Elemente können auf Benutzereingaben reagieren, indem sie Events (Ereignisse) auslösen. Ein Event ist eine Aktion, die im Browser stattfindet, wie z.B. ein Mausklick oder ein Tastendruck.
Häufig genutzte Events:
* **click:** Wird ausgelöst, wenn ein Element angeklickt wird.
* **input:** Wird ausgelöst, wenn der Benutzer Eingaben in ein Formularfeld macht.
* **mouseover:** Tritt auf, wenn der Mauszeiger über ein Element bewegt wird.
Um auf ein Event zu reagieren, verknüpfen wir eine Funktion (auch als Event-Handler bezeichnet) mit einem DOM-Element. Dies geschieht meistens durch die Methode addEventListener().
document.getElementById("meinButton").addEventListener("click", function() {
alert("Button wurde geklickt!");
});
Die Methode addEventListener() wird verwendet, um ein Ereignis (in diesem Fall click) mit einem DOM-Element zu verknüpfen.
Wenn der Button angeklickt wird, wird die Funktion ausgeführt, die ein Popup mit der Nachricht "Button wurde geklickt!" ausgibt.