Komplekse DOM-elementselektorer i JavaScript

Lad os gøre noget mere komplekst. Lad os for eksempel have følgende HTML-kode:

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

Lad os få en reference til inputfeltet, som befinder sig inde i blokken #parent:

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

Som du kan se, fik vi vores inputfelt ved hjælp af selektoren #parent input. Faktisk matcher denne CSS-selektor alle inputfelter, der befinder sig i #parent.

Lad os for eksempel sige, at vi har to sådanne inputfelter:

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

Så, hvis du skriver selektoren #parent input i CSS-koden, vil den påvirke begge vores inputfelter:

css#parent input {
  color: red;
}

Metoden querySelector fungerer dog ikke på samme måde. Den henter altid kun ét element - det første, der matcher den angivne selektor. Lad os se på et eksempel. Lad os sige, at vi har inputfelter med klassen elem:

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

Lad os hente det første af disse inputfelter:

javascriptlet elem = document.querySelector('.elem');
console.log(elem); // her vil det første inputfelt være
Задание 1

Følgende HTML er givet:

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

Få en reference til det første afsnit i div'en med id lig med block.

Задание 2

Følgende HTML er givet:

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

Få en reference til det første afsnit i div'en med klassen block.

Задание 3

Følgende HTML er givet:

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

Få en reference til det første afsnit med klassen www.