querySelector() / querySelectorAll():
Auswahl von Elementen innerhalb anderer festgelegter Bereiche

Wir kennen die komfortablen Möglichkeiten, bei CSS Elementen innerhalb eines bestimmten Bereiches auszuwählen. Genau diesen Komfort wollen wir auch in JavaScript haben. Im folgenden Beispiel wollen wir nur auf Absätze innerhalb des Fußbereichs zugreifen. Dazu ergänzen wir unser bisheriges HTML-Beispiel um einen HTML-Fußbereich <footer> und dort ein <p> als Absatz.

<html>
<head>
	<title>Seitentitel</title>
</head>
<script>
window.addEventListener("load", function() {
}, false );
</script>
<body>
	<h1 class="wichtig">Überschrift 1</h1>
	<p class="wichtig">Erster Absatz mit Text</p>
	<p>Zweiter Absatz mit Text</p>	
	<a href="https://www.javascript-kurs.de/">Text des Links</a>
<footer>
    <p>Fußbereich</p>
</footer>
</body>
</html>

Wir wollen jetzt auf alle <p> nur im Fußbereich zugreifen können. Mit CSS ist diese Anweisung sehr einfach. Wir wählen den CSS-Typ-Selektor footer und p und es passt schon. Als Beispiel sieht das wie folgt in CSS aus:

footer p {
    color: red;
}

Sprich im Bereich footer alle p – das sagt der Aufbau "footer LEERZEICHEN p".

Die gleichen Möglichkeiten zur Auswahl wollen wir natürlich auch unter JavaScript haben – Komfort ist doch etwas Schönes.

Das klappt über den querySelector() – und hier können wir alle Kombinationen von ID, Klassen und Typ-Selektoren nutzen. In unserem obigen Beispiel würde es dann wie folgt aussehen:

console.log(document.querySelector("footer p"));

Und als Ergebnis erhalten wir:

<p>Fußbereich</p>

Hier ist jetzt jegliche Variationsmöglichkeit vorhanden. Oft werden wir mehrere Bereiche auf unserer Website haben, wie z.B. einen Bereich div mit dem Attribut id:

<div id="spalte1">
	<h1 class="wichtig">Überschrift 1</h1>
	<p class="wichtig">Erster Absatz mit Text</p>
	<p>Zweiter Absatz mit Text</p>	
	<a href="https://www.javascript-kurs.de/">Text des Links</a>
</div>
<footer>
    <p>Fußbereich</p>
</footer>

Und hier können wir nun auf die Absätze p innerhalb des Bereiches mit der id="spalte1" zugreifen über:

console.log(document.querySelector("#spalte1 p"));

Wir bekommen als Ergebnis:

<p class="wichtig">Erster Absatz mit Text</p>

WICHTIG ist: Wir bekommen über document.querySelector() immer nur das erste Element zurück! In unserem obigen Beispiel haben wir ja 2 Absätze mit <p>, aber nur der erste wird zurückgeliefert. Wenn wir nun auf beide Absätze zugreifen wollen, gibt es die Anweisung querySelectorAll()

querySelectorAll() – alle Elemente der query

Wir wollen alle Elemente und nicht nur das allererste Element auswählen. Bei unserem obigen Beispiel ändern wir nur die Anweisung querySelector in querySelectorAll ab.

<script>
window.addEventListener("load", function() {
console.log(document.querySelectorAll("#spalte1 p"));
}, false );
</script>
<body>
<div id="spalte1">
	<h1 class="wichtig">Überschrift 1</h1>
	<p class="wichtig">Erster Absatz mit Text</p>
	<p>Zweiter Absatz mit Text</p>	
	<a href="https://www.javascript-kurs.de/">Text des Links</a>
</div>
<footer>
    <p>Fußbereich</p>
</footer>

Und als Ergebnis haben wir nun alle Elemente im Zugriff:

NodeList(2) [p.wichtig, p]

Nun haben wir verschiedene Möglichkeiten kennengelernt, um Elemente präzise auszuwählen. Jetzt wollen wir mit dieser Auswahl auch irgendetwas anstellen – z.B. diese durch Anklicken einfärben.

Bitte unterstützen Sie dieses Projekt

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Bestellen Sie über folgenden Link bei Amazon:
Bücher über JavaScript

Sie können uns auch eine Spende über PayPal zukommen lassen.

Vielen Dank für Ihre Unterstützung

weitere eigene Projekte: