Selettori complessi di elementi DOM in JavaScript

Facciamo qualcosa di più complesso. Supponiamo, ad esempio, di avere questo codice HTML:

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

Otteniamo un riferimento all'input che si trova all'interno del blocco #parent:

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

Come puoi vedere, abbiamo ottenuto il nostro input tramite il selettore #parent input. In realtà, questo selettore CSS corrisponde a tutti gli input situati in #parent.

Supponiamo, ad esempio, di avere due input di questo tipo:

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

Allora, se scrivi il selettore #parent input nel codice CSS, interesserà entrambi i nostri input:

css#parent input {
  color: red;
}

Tuttavia, il metodo querySelector non funziona così. Ottiene sempre solo un elemento - il primo che corrisponde al selettore specificato. Vediamo un esempio. Supponiamo di avere input con la classe elem:

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

Otteniamo il primo di questi input:

javascriptlet elem = document.querySelector('.elem');
console.log(elem); // qui ci sarà il primo input
Задание 1

Dato il seguente HTML:

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

Ottieni un riferimento al primo paragrafo all'interno del div con id uguale a block.

Задание 2

Dato il seguente HTML:

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

Ottieni un riferimento al primo paragrafo all'interno del div con classe block.

Задание 3

Dato il seguente HTML:

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

Ottieni un riferimento al primo paragrafo con classe www.