Komplexe DOM-Element-Selektoren in JavaScript

Lassen Sie uns etwas Komplexeres machen. Nehmen wir zum Beispiel an, wir haben folgenden HTML-Code:

html<div id="parent">
  <input>
</div>

Lassen Sie uns eine Referenz auf das Input-Element erhalten, das sich innerhalb des Blocks #parent befindet:

javascriptlet elem = document.querySelector('#parent input');
console.log(elem);

Wie Sie sehen, haben wir unser Input-Element mit dem Selektor #parent input erhalten. Tatsächlich fallen unter diesen CSS-Selektor alle Input-Elemente, die sich in #parent befinden.

Nehmen wir an, wir haben zwei solcher Input-Elemente:

html<div id="parent">
  <input value="1">
  <input value="2">
</div>

Dann würde, wenn man den Selektor #parent input im CSS-Code schreibt, dieser beide unserer Input-Elemente betreffen:

css#parent input {
  color: red;
}

Die Methode querySelector funktioniert jedoch anders. Sie erhält immer nur ein Element - das erste, das auf den angegebenen Selektor passt. Schauen wir uns ein Beispiel an. Nehmen wir an, wir haben Input-Elemente mit der Klasse elem:

html<input class="elem">
<input class="elem">

Lassen Sie uns das erste dieser Input-Elemente erhalten:

javascriptlet elem = document.querySelector('.elem');
console.log(elem); // hier wird das erste Input-Element sein
Задание 1

Gegeben ist das folgende HTML:

html<div id="block">
  <p>1</p>
  <p>2</p>
</div>

Erhalten Sie eine Referenz auf den ersten Absatz aus dem Div mit der id gleich block.

Задание 2

Gegeben ist das folgende HTML:

html<div class="block">
  <p>1</p>
  <p>2</p>
</div>

Erhalten Sie eine Referenz auf den ersten Absatz aus dem Div mit der Klasse block.

Задание 3

Gegeben ist das folgende HTML:

html<p class="www">text</p>
<p class="www">text</p>

Erhalten Sie eine Referenz auf den ersten Absatz mit der Klasse www.