JavaScript - DOM-Knotenlisten

Einführung in DOM-Knotenlisten

Hallo da draußen, ambitionierte Web-Entwickler! Heute begeben wir uns auf eine aufregende Reise in die Welt der JavaScript DOM-Knotenlisten. Keine Sorge, wenn du neu im Programmieren bist – ich werde dein freundlicher Guide sein, und wir gehen das Schritt für Schritt durch. Am Ende dieses Tutorials wirst du Webseiten wie ein Profi manipulieren können!

JavaScript - DOM Node Lists

Was ist eine DOM-Knotenliste?

Bevor wir eintauchen, lassen Sie uns mit den Grundlagen beginnen. Stell dir eine Webseite wie einen Familienstammbaum vor. Das DOM (Document Object Model) ist wie der Familienstammbaum für Webseiten. Jedes Element auf der Seite – sei es ein Absatz, ein Knopf oder ein Bild – ist ein Mitglied dieser Familie, oder in technischer Sprache, ein "Knoten".

Eine Knotenliste ist schlicht eine Sammlung dieser Knoten. Es ist so, als hättest du eine Gästeliste für eine Party, bei der jeder Gast ein Element von deiner Webseite ist.

Beispiel 1: Eine Knotenliste erhalten

Sehen wir uns ein einfaches Beispiel an:

<div>
<p>Absatz 1</p>
<p>Absatz 2</p>
<p>Absatz 3</p>
</div>

<script>
let absätze = document.querySelectorAll('p');
console.log(absätze);
</script>

In diesem Beispiel gibt querySelectorAll('p') eine Knotenliste zurück, die alle <p>-Elemente enthält. Wenn du dies in der Konsole deines Browsers ausführst, wirst du etwas wie folgt sehen:

NodeList(3) [p, p, p]

Dies tells uns, dass wir eine Knotenliste mit drei Absatzelementen haben.

Arbeiten mit Knotenlisten

Nun, da wir unsere Knotenliste haben, sehen wir uns an, was wir damit anfangen können!

Beispiel 2: Durch eine Knotenliste iterieren

let absätze = document.querySelectorAll('p');

absätze.forEach((absatz, index) => {
console.log(`Absatz ${index + 1}: ${absatz.textContent}`);
});

Dieser Code wird Folgendes ausgeben:

Absatz 1: Absatz 1
Absatz 2: Absatz 2
Absatz 3: Absatz 3

Hier verwenden wir die forEach-Methode, um durch jeden Absatz in unserer Knotenliste zu iterieren. Es ist, als ob wir durch unsere Gästeliste gehen und jeden Gast einzeln begrüßen!

Die Magie von Live- und Statischen Knotenlisten

Nun, hier wird es interessant. Knotenlisten können entweder "live" oder "statisch" sein.

Eine live Knotenliste ist wie eine magische Gästeliste, die sich selbst aktualisiert, wenn Gäste zur Party kommen oder abreisen. Im Gegensatz dazu ist eine statische Knotenliste wie ein Schnappschuss der Gästeliste zu einem bestimmten Zeitpunkt – sie ändert sich nicht, selbst wenn neue Gäste kommen.

Beispiel 3: Live Knotenliste

<ul id="guestList">
<li>Alice</li>
<li>Bob</li>
</ul>

<script>
let gäste = document.getElementsByTagName('li');
console.log(gäste.length); // Ausgabe: 2

let neuerGast = document.createElement('li');
neuerGast.textContent = 'Charlie';
document.getElementById('guestList').appendChild(neuerGast);

console.log(gäste.length); // Ausgabe: 3
</script>

In diesem Beispiel gibt getElementsByTagName eine live Knotenliste zurück. Wenn wir Charlie zur Liste hinzufügen, aktualisiert sich unsere gäste Knotenliste automatisch!

Beispiel 4: Statische Knotenliste

<ul id="guestList">
<li>Alice</li>
<li>Bob</li>
</ul>

<script>
let gäste = document.querySelectorAll('li');
console.log(gäste.length); // Ausgabe: 2

let neuerGast = document.createElement('li');
neuerGast.textContent = 'Charlie';
document.getElementById('guestList').appendChild(neuerGast);

console.log(gäste.length); // Ausgabe: 2
</script>

Hier gibt querySelectorAll eine statische Knotenliste zurück. Selbst nach dem Hinzufügen von Charlie ändert sich unsere gäste Knotenliste nicht. Es ist, als hätten wir ein Foto der Gästeliste gemacht und dieses Foto aktualisiert sich nicht, wenn neue Gäste kommen.

Der Unterschied zwischen HTMLCollection und NodeList

Nun, lassen Sie uns über zwei Cousins in der DOM-Familie sprechen: HTMLCollection und NodeList. Sie sind ähnlich, aber sie haben ihre eigenen einzigartigen Merkmale.

HTMLCollection

Eine HTMLCollection ist immer live. Es ist wie eine Gästeliste, die sich ständig aktualisiert.

let divs = document.getElementsByTagName('div'); // Gibt HTMLCollection zurück

NodeList

Eine NodeList kann live oder statisch sein, abhängig davon, wie sie erstellt wird.

let absätze = document.querySelectorAll('p'); // Gibt statische NodeList zurück
let childNodes = document.body.childNodes; // Gibt live NodeList zurück

Hier ist eine Tabelle, die ihre Unterschiede zusammenfasst:

Merkmal HTMLCollection NodeList
Live/Statisch Immer live Kann live oder statisch sein
Inhalt Nur Elementknoten Kann alle Knotentypen enthalten
Zugriff auf Elemente Nach Name, ID oder Index Nur nach Index
forEach-Methode Nicht verfügbar Verfügt

Schlussfolgerung

Und da haben wir es, Leute! Wir haben die Welt der DOM-Knotenlisten bereist, von den grundlegenden Konzepten bis hin zu den Feinheiten von live und statischen Listen. Denke daran, Übung macht den Meister. Versuche diese Beispiele aus, experimentiere damit, und bald wirst du Webseiten wie ein erfahrener Entwickler manipulieren können!

Bevor wir uns trennen, hier ist ein kleiner Web-Entwickler-Witz für dich: Warum hat der JavaScript-Entwickler Brille getragen? Weil er nicht C# konnte! (Verstanden? C Sharp? Na gut, ich mach mich aus dem Staub...)

Weiter codieren, weiter lernen und vor allem: Viel Spaß mit JavaScript!

Credits: Image by storyset