Auswahl und Traversieren im DOM-Baum
Die Selectors-API bietet Methoden, mit denen Sie schnell und einfach Element
-Knoten aus dem DOM abrufen können, indem sie mit einem Satz von Selektoren verglichen werden. Dies ist viel schneller als frühere Techniken, bei denen es beispielsweise notwendig war, eine Schleife in JavaScript-Code zu verwenden, um die spezifischen Elemente zu finden, die Sie benötigen.
Die NodeSelector-Schnittstelle
Diese Spezifikation fügt zwei neue Methoden zu allen Objekten hinzu, die die Document
-, DocumentFragment
- oder Element
-Schnittstellen implementieren:
querySelector()
-
Gibt den ersten passenden
Element
-Knoten innerhalb des Unterbaums des Knotens zurück. Wenn kein passender Knoten gefunden wird, wirdnull
zurückgegeben. querySelectorAll()
-
Gibt eine
NodeList
zurück, die alle passendenElement
-Knoten innerhalb des Unterbaums des Knotens enthält, oder eine leereNodeList
, wenn keine Übereinstimmungen gefunden werden.
Hinweis:
Die von querySelectorAll()
zurückgegebene NodeList
ist nicht live, was bedeutet, dass Änderungen im DOM nicht in der Sammlung reflektiert werden. Dies unterscheidet sich von anderen DOM-Abfragemethoden, die Live-Node-Listen zurückgeben.
Sie finden Beispiele und Details, indem Sie die Dokumentation für die Methoden Element.querySelector()
und Element.querySelectorAll()
lesen.
Selektoren
Die Selektormethoden akzeptieren Selektoren, um zu bestimmen, welches Element oder welche Elemente zurückgegeben werden sollen. Dies schließt Selektorliste ein, damit Sie mehrere Selektoren in einer einzelnen Abfrage gruppieren können.
Um die Privatsphäre des Benutzers zu schützen, werden einige Pseudoklassen nicht unterstützt oder verhalten sich anders. Zum Beispiel wird :visited
keine Übereinstimmungen zurückgeben und :link
wird als :any-link
behandelt.
Es können nur Elemente ausgewählt werden, daher werden Pseudoklassen nicht unterstützt.
Beispiele
Um alle Paragraphen (p
)-Elemente in einem Dokument auszuwählen, deren Klassen warning
oder note
enthalten, können Sie Folgendes tun:
const special = document.querySelectorAll("p.warning, p.note");
Sie können auch nach ID abfragen. Zum Beispiel:
const el = document.querySelector("#main, #basic, #exclamation");
Nach der Ausführung des obigen Codes enthält el
das erste Element im Dokument, dessen ID main
, basic
oder exclamation
ist.