Complexe DOM element selectoren in JavaScript

Laten we iets complexers doen. Stel, we hebben bijvoorbeeld de volgende HTML code:

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

Laten we een referentie naar de input verkrijgen, die zich bevindt in het blok #parent:

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

Zoals je ziet, hebben we onze input verkregen met de selector #parent input. In werkelijkheid vallen onder deze CSS selector alle inputs die zich bevinden in #parent.

Stel, we hebben twee van zulke inputs:

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

Dan, als je de selector #parent input in de CSS code schrijft, zal het beide onze inputs beïnvloeden:

css#parent input {
  color: red;
}

De methode querySelector werkt echter niet zo. Het verkrijgt altijd slechts één element - de eerste, die onder de opgegeven selector valt. Laten we kijken naar een voorbeeld. Stel we hebben inputs met de klasse elem:

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

Laten we de eerste van deze inputs verkrijgen:

javascriptlet elem = document.querySelector('.elem');
console.log(elem); // hier zal de eerste input staan
Задание 1

De volgende HTML is gegeven:

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

Verkrijg een referentie naar de eerste alinea uit de div met id, gelijk aan block.

Задание 2

De volgende HTML is gegeven:

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

Verkrijg een referentie naar de eerste alinea uit de div met de klasse block.

Задание 3

De volgende HTML is gegeven:

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

Verkrijg een referentie naar de eerste alinea met de klasse www.