Что такое DOM?
Еще несколько десятков лет назад все веб-сайты в сети были незамысловатым набором простых текстовых страниц, ничем не отличавшихся друг от друга. Теперь же, у современных интернет-ресурсов тщательно продуманный интерфейс с адаптивными элементами, отзывчивыми кнопками, параллаксной прокруткой и бог знает с чем еще.
Чтобы создать такой, хорошо продуманный и привлекательный для пользователей сайт, все его файлы, включая разметку, стили и скрипты должны тесно взаимодействовать друг с другом, и объектная модель документа (или DOM ) предоставляет нам такую возможность.
Чтобы сделать HTML-документ более динамичным и интерактивным, скрипт должен иметь доступ к его содержимому, одновременно отслеживая действия пользователя.
DOM – это древовидное представление веб-сайта, загружаемого в браузер, в виде серии объектов, вложенных друг в друга. Оно определяет логический каркас документа, способы доступа к нему и управления им. С его помощью мы можем создавать документы, перемещаться по их структуре, а также добавлять, изменять или удалять его элементы и их содержимое.
Работа с DOM
Давайте посмотрим на простой пример, показывающий, как скрипт может получить доступ к содержимому HTML-документа через DOM:
Это HTML-форма входа на сайт. Корень любого DOM-дерева – сам HTML-документ (document
). А уже от корня, в зависимости от структуры нашей HTML-разметки – тянется вверх ствол с ветками. Вы можете получить доступ ко всем его элементам с помощью набора свойств и методов, предоставляемых DOM API. Но что это за методы? Кроме уже использованного в примере, существуют еще несколько полезных функций. Разберем те из них, что чаще всего применяются в проектах:
Методы querySelector() и querySelectorAll()
Нужны для доступа к одному или нескольким элементам из DOM, соответствующим одному или нескольким селекторам CSS, например:
Метод createElement()
Используйте этот метод для создания указанного элемента и вставки его в DOM:
Метод getElementById()
Этот метод необходим для получения элемента из документа по его уникальному атрибуту id
:
Метод getElementsByTagname()
Используйте этот метод для доступа к одному или нескольким элементам по имени их HTML-тега:
Метод setAttribute()
Этот метод используется для установки или изменения значения атрибута элемента.
Предположим, у нас есть атрибут id
, содержащий значение favorite
. Но мы хотим изменить значение на usual
. Сделаем это, используя рассматриваемый метод:
Также рассмотрим несколько часто применяемых при работе с DOM свойств:
Свойство innerHTML
А это свойство необходимо применять в тех случаях, когда нам нужен доступ к текстовому содержимому элемента. Небольшой пример с выводом текста с помощью рассматриваемого свойства:
Выведет в консоль:
Свойство addEventListener()
Это свойство прикрепляет прослушиватель событий к вашему элементу. Синтаксис будет такой:
Здесь:
elem
– элемент, которому назначен обработчик события.
event
– некое событие, допустим, click
.
hndlr
– функция, обрабатывающая это событие.
Методы для работы с узлами DOM
Каждый элемент на HTML-странице называется узлом, даже объект document
, представляющий весь документ. Вы можете получить доступ к любому из них, используя следующие свойства объекта node
:
node.childNodes
– обращается к дочерним узлам выбранного родителя.node.firstChild
– доступ к первому дочернему элементу выбранного родителя.node.lastChild
– доступ к последнему дочернему элементу выбранного родителя.node.parentNode
– обращается к родителю выбранного дочернего узла.node.nextSibling
– доступ к следующему последовательному элементу (родному элементу) выбранного элемента.node.previousSibling
– обращается к предыдущему элементу (родному брату) выбранного элемента.
Для чего нужен DOM
DOM – это нисходящее представление всех элементов, составляющих веб-страницу. Это интерфейс, через который скрипт взаимодействует с вашим HTML. Для чего вам знать это? Учитывая, что самым часто производимым действием при работе с DOM является поиск (выбор) определенных элементов, вам необходимо понимать среду, в которой вы желаете что-то поменять. Ведь не имея представления об устройстве DOM-дерева и понимания связи между его узлами – найти что-то в нем будет крайне затруднительно.
Комментарии