Сложни селектори на DOM елемент в JavaScript

Нека направим нещо по-сложно. Например, нека имаме следния HTML код:

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

Нека получим референция към input полето, намиращо се вътре в блока #parent:

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

Както виждате, получихме нашия input чрез селектора #parent input. Всъщност този CSS селектор се отнася за всички input полета, намиращи се в #parent.

Например, нека имаме две такива input полета:

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

Тогава, ако напишем селектора #parent input в CSS кода, той ще засегне и двете наши input полета:

css#parent input {
  color: red;
}

Методът querySelector обаче не работи по този начин. Той винаги получава само един елемент - първия, който отговаря на указания селектор. Нека разгледаме пример. Нека имаме input полета с клас elem:

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

Нека получим първото от тези input полета:

javascriptlet elem = document.querySelector('.elem');
console.log(elem); // тук ще бъде първото input поле
Задание 1

Даден е следният HTML:

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

Получете референция към първия параграф от div с id, равен на block.

Задание 2

Даден е следният HTML:

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

Получете референция към първия параграф от div с клас block.

Задание 3

Даден е следният HTML:

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

Получете референция към първия параграф с клас www.