Выборка элементов
Выбрать элементы можно через методы querySelector() и querySelectorAll().
document.querySelectorAll(".block"); // выборка по классам
document.querySelectorAll("article"); // выборка тегов <article>
document.querySelectorAll("ul a"); // выборка ссылок в теге <ul>
Метод querySelector() выбирает только первый найденный элемент, а метод querySelectorAll() выбирает все указанные элементы.
Данные методы появились в стандарте ES 5.
Если надо выбрать элемент по атрибуту «id», то вместо querySelector() можно использовать getElementById().
document.getElementById("elem"); // выборка по атрибуту "id"
Метод getElementById() работает немного быстрее, т.к. сразу ищет элемент по атрибуту «id».
Также в целях оптимизации можно искать элементы только внутри указанного объекта.
let form = document.querySelector("#form");
form.querySelectorAll("input"); // ищет теги <input> только внтури формы
На примере выше происходит поиск тегов <input> только внутри формы, вместо того, чтобы искать по всей странице.
Причём сама форма сохранена в переменную «form», этим самым код не будет каждый раз искать форму также по всей странице.
Если в querySelector() будет введено неверное значение CSS, то JavaScript вернёт ошибку «Uncaught SyntaxError: Failed to execute 'querySelector' on 'Document': '!@' is not a valid selector».
Данные, которые возвращает querySelectorAll() называется «NodeList».
getElementsBy (устаревшие)
Методы ниже являются устаревшими, и их не рекомендуется использовать:
getElementsByTagName()getElementsByClassName()getElementsByName()
Данные методы использовались до появления querySelector().
Об этом также упоминается в спецификации WHATWG (цитата ниже).
«HTMLCollection — это исторический артефакт, от которого мы не можем избавиться в сети. Хотя разработчики, конечно, могут продолжать его использовать, новые разработчики стандартов API не должны его использовать»
Один из минусов данных методов в том, что они не сохраняют результат выборки.
let articles1 = document.getElementsByTagName('article');
let articles2 = document.querySelectorAll('article');
articles1; // [article]
articles2; // [article]
// тег <article> удалён
articles1; // []
articles2; // [article]
При этом метод getElementById() сохраняет результат выборки в переменной, если сам элемент будет удалён на странице.
let article = document.getElementById("article");
article; // [article]
// тег <article> удалён
article; // [article] (элемент в переменной не удаляется)
Поддержать автора
Все статьи создаются и поддерживаются одним человеком,
если вам нравится контент, вы можете поддержать автора сайта
