Если вы читаете эту статью, значит, вы должны быть знакомы с DOM (объектной моделью документа). Итак, давайте начнем с селекторов DOM, не теряя времени на объяснение, что такое DOM.
Селекторы DOM, как следует из названия, используются для выбора элементов HTML в документе с помощью JavaScript. Существует 5 способов выбора элементов в модели DOM с помощью селекторов.
- getElementsByTagName ()
- getElementsByClassName ()
- getElementById ()
- querySelector ()
- querySelectorAll ()
Все эти методы являются свойствами объекта документа. Итак, чтобы использовать один, мы должны добавить к этим элементам префикс объекта документа как,
document.getElementsByTagName() document.getElementsByClassName() document.getElementById() document.querySelector() document.querySelectorAll()
Прежде чем мы начнем с этих селекторов, давайте сначала рассмотрим образец HTML-документа, чтобы все эти операции выбора можно было выполнять с помощью этой страницы.
<!-- Sample HTML Page --> <!DOCTYPE html> <html lang="en"> <head> <title>Document Object Model</title> </head> <body> <h1 class="heading">DOM Selectors</h1> <ul> <li id="item">getElementsByTagName</li> <li class="selectors">getElementsByClassName</li> <li class="selectors">getElementById</li> <li id="item">querySelector</li> <li id="item">querySelectorAll</li> </ul> </body> </html>
Приведенный выше HTML-документ не требует пояснений, поскольку он очень прост. И я буду использовать веб-консоль, чтобы лучше все объяснить. Давайте начнем.
getElementsByTagName
Этот метод возвращает все элементы, соответствующие указанному имени тега.
document.getElementsByTagName('h1')
возвращает набор элементов, соответствующих имени тега h1. А поскольку у нас всего один элемент h1, список содержит только один элемент.- Используя [0] в качестве индекса, мы можем получить доступ к первому элементу в списке, который равен
<h1 class="heading">DOM Selectors</h1>
. document.getElementsByTagName('li')
возвращает список из 5 элементов, поскольку на нашей странице есть пять тегов li.- Любой отдельный элемент можно выбрать с помощью его индекса, например
document.getElementsByTagName('li')[0]
.
getElementsByClassName
Этот метод возвращает все элементы, соответствующие указанному имени класса.
- Этот селектор очень похож на
getElementsByTagName
, за исключением того, что s выбор основан на имени класса, а не имени тега. Вы можете увидеть несколько примеров на изображении выше.
getElementById
Здесь выбор основан на имени идентификатора. И это похоже на селектор имени тега и имени класса, но есть разница в том, сколько элементов выбирает этот селектор. Во всех перечисленных выше селекторах возвращается список всех совпадающих элементов. Но этот селектор возвращает только первый совпавший элемент, игнорируя остальные.
- Как видите, несмотря на то, что у нас есть 3 элемента li с идентификатором item, мы получили только первый элемент li с идентификатором элемент. Остальные все элементы игнорируются.
И в этом
getElementById
отличается отgetElementsByTagName
иgetElementsByClassName
.getElementById
возвращает элемент, как только он находит совпадение. Также вы можете заметить различие в названии селектора: слово элемент употребляется в единственном числе вgetElementById
, а во множественном числе в других селекторахgetElementsByTagName
&getElementsByClassName
.
querySelector
Он возвращает первый элемент, который соответствует указанному селектору CSS в документе.
document.querySelector('li')
возвращает первый элемент, соответствующий селектору CSSli
. Остальные элементы игнорируются.document.querySelector('.heading')
возвращает первый элемент, соответствующий селектору CSS.heading
.document.querySelector('#item')
возвращает первый элемент, соответствующий селектору CSS#heading
.- Как видите, мы можем использовать все виды селекторов CSS в методе
querySelector
, который мы будем использовать в обычном файле CSS.
Обратите внимание, что вы должны использовать селекторы CSS, а не обычные селекторы HTML в качестве параметра.
document.querySelector('.className')
действителен, аdocument.querySelector('className')
недействителен. Поэтому вам нужно использовать формат, используемый в селекторах CSS.
querySelectorAll
Этот метод возвращает все элементы, которые соответствуют указанному селектору CSS в документе.
document.querySelectorAll('.heading')
возвращает список всех элементов, соответствующих указанному селектору CSS. Поскольку у нас есть только один элемент под именем класса.heading
, список содержит один элемент. И к нему можно получить доступ по его index.- Точно так же
document.querySelectorAll('#item')
возвращает список из 3 элементов, соответствующих селектору CSS. Доступ к отдельным элементам осуществляется с помощью индекса.
Обратите внимание, что два элемента не должны иметь одинаковый идентификатор в качестве хорошей практики. И я использовал тот же идентификатор для некоторых элементов, чтобы лучше объяснить ситуацию. Таким образом, вы можете следовать рекомендуемому способу не использовать один и тот же идентификатор более чем для одного элемента.
Это все, что касается селекторов DOM. Мы поговорим о некоторых других методах DOM в следующей статье. Спасибо. Удачного кодирования!