Вы можете использовать оба метода querySelector для поиска одного или нескольких элементов с помощью:

класс

document.querySelector('.class__name')

ID

document.querySelector('#ID__name')

атрибут

document.querySelector('input[type="text"]')

атрибут данных

document.querySelector('header[data-info="product-header"]')

Селекторы запросов работают одинаково! И если вы знакомы с jQuery, то у вас нет проблем с этим 👍

Как выбрать 1 элемент на странице с помощью JavaScript

Чтобы выбрать один единственный элемент на HTML-странице, вам понадобится document.querySelector()! Просто введите условие в качестве параметра, и DOM будет искать элемент.

Например, мы хотим найти заголовок с классом header__main. (как вы могли заметить, я использовал шаблон из видео БЭМ).

document.querySelector('.header__main')

document.querySelector вернет первый элемент на странице, соответствующий селектору.

Элемент представляет собой объект NodeList. Вы можете найти много информации о вашем элементе в этом объекте. Например: стиль, высота, ширина, имена классов, атрибуты данных, дочерние элементы и многое другое!

Если вы хотите использовать высоту или ширину элемента, вам нужно сделать это следующим образом.

var headerElement = document.querySelector('.header__main')
var headerHeight = headerElement.clientHeight;
var headerWidth = headerElement.clientWidth;

Как получить несколько элементов на странице

Чтобы выбрать несколько элементов на HTML-странице, вам понадобится document.querySelectorAll()! Вставьте свой селектор, и вы получите все элементы.

document.querySelectorAll вернет все элементы на странице, соответствующие селектору, как объект NodeList.

Например, у вас есть навигация. Но в JavaScript вы хотите иметь доступ ко всем элементам ‹li›. Тогда на помощь приходит метод querySelectorAll()!

HTML

<nav class=“main-nav”>
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Blog</a></li>
  </ul>
</nav>

JavaScript

var navElements = document.querySelectorAll('.main-nav li');
navElements.forEach(function(navElement) {
  console.log('navElement: ', navElement);
})

Я обнаружил, что не все браузеры принимают метод forEach() для объекта NodeList. Так что лучше выбрать цикл for.

var navElements = document.querySelectorAll('.main-nav li');

for (var i = 0; i < navElements.length; i++) {
  console.log('navElements[i]: ', navElements[i].clientHeight);
}

Этот объект NodeList похож на массив, но есть разница. Прочтите на Quora, в чем разница между объектом NodeList и массивом.

Если вам нужна помощь или у вас есть вопросы о querySelector, дайте мне знать, чтобы я мог вам помочь! Вы можете оставить свой ответ в комментариях или просто зарегистрироваться в нашем открытом Групповом сообществе Facebook!

Подпишитесь на нас в:

Подпишитесь на нас в Medium: https://medium.com/mr-frontend-community
Подпишитесь на нас в Twitter: https://twitter.com/frontendmr
Подпишитесь на нас в Facebook: http://facebook.com/mrfrontendcommunity/
Подпишитесь на нас в Instagram: @mrfrontend

Первоначально опубликовано в Mr Frontend Blog.