Console.log(child_nodes.length); // вернёт 1




Объектная модель документа

Объектная модель документа (Document Object Model, DOM) – это интерфейс программирования приложений (Application Programming Interface, API) для XML, который был расширен также для работы с HTML.

В DOM всё содержимое страницы (элементы и текст) представляется как иерархия узлов. Рассмотрим следующий код:

  <html> <head> <title>Простая страница</title> </head> <body> <p>Привет Мир!</p> </body> </html>

Этот код можно изобразить с помощью DOM как иерархию узлов:

Представляя документ в виде дерева узлов, DOM API предоставляет разработчикам полный контроль над содержимым и структурой веб-страницы.

При описании древовидной структуры DOM используется терминология, которая была заимствована у генеалогических деревьев.

Так, узел, расположенный непосредственно над данным узлом, называется родительским по отношению к данному узлу. Узлы, расположенные на один уровень ниже данного узла, называются дочерними по отношению к данному узлу. Узлы, находящиеся на одном уровне и имеющие одного и того же родителя, называются сестринскими или братьями. Узлы, расположенные на любое число уровней ниже данного узла, называются его потомками. Родительские, прародительские и любые другие узлы, расположенные на любое число уровней выше данного узла, называются его предками.

Справочник по DOM содержит описание объектов Document, Element, Event и NodeList, включая описание их методов и свойств:

  • HTML Document
  • HTML Element
  • HTML Event
  • NodeList

Объект Document

Каждая веб-страница, загружаемая в браузере, имеет свой собственный объект Document. Интерфейс объекта Document служит точкой доступа к содержимому веб-страницы (дерево DOM, включающее все элементы со всем их содержимым) и предоставляет глобальную функциональность для документа (например, получение URL-адреса страницы или создание новых элементов).

Объект Document используется для получения, изменения или добавления содержимого в HTML-документ и для обработки событий в этом документе.

Методы

Метод Описание
addEventListener() Позволяет установить обработчик события для документа.
createElement() Создает новый элемент.
createTextNode() Создает и возвращает текстовый узел с указанным текстом. Принимает один аргумент (строку с текстом).
getElementById() Возвращает ссылку на элемент, с указанным идентификатором.
getElementsByClassName() Возвращает коллекцию элементов, соответствующих указанному классу.
getElementsByName() Возвращает коллекцию всех элементов в документе, которые имеют атрибут name с указанным значением. Элементы хранятся в коллекции в том порядке, в котором они встречаются в исходном коде документа. Метод document.getElementsByName() относится к объекту HTMLDocument, а не к объекту Document, поэтому он доступен только в HTML-документах и не доступен в XML-документах.
getElementsByTagName() Возвращает массив элементов, указанного типа.
querySelector() Возвращает первый элемент, совпавший с одним из указанных селекторов.
querySelectorAll() Возвращает массив элементов, соответствующих указанным селекторам.
removeEventListener() Удаляет обработчик события, который был установлен с помощью метода addEventListener().
write() Записывает переданные ему аргументы в документ.
writeln() Записывает переданные ему аргументы в документ, вставляя после вывода данных пробел.

Свойства

Свойство Описание
activeElement Возвращает элемент, который в данный момент находится в фокусе.
documentURI Возвращает строку, содержащую URL-адрес документа.
images Возвращает массив, содержащий все элементы <img> документа.
links Возвращает массив, содержащий все элементы <a> и <area>, которые имеют атрибут href.

 

Объект Element

Объект Element является интерфейсом, предоставляющим методы и свойства для работы со всеми видами элементов.

Методы

Метод Описание
addEventListener() Позволяет установить обработчик события для элемента.
appendChild() Добавляет дочерний узел в конец родительского элемента.
getAttribute() Извлекает значение указанного атрибута.
getElementsByClassName() Возвращает коллекцию элементов, соответствующих указанному классу.
getElementsByTagName() Возвращает массив элементов, указанного типа.
hasAttribute() Возвращает значение true, если элемент имеет указанный атрибут, или false в обратном случае.
insertBefore() Вставляет элемент перед указанным элементом.
removeAttribute() Удаляет указанный атрибут из текущего элемента.
removeChild() Удаляет указанный дочерний узел из текущего родительского элемента.
removeEventListener() Удаляет обработчик события, который был установлен с помощью метода addEventListener().
setAttribute() Добавляет к элементу атрибут и устанавливает для него значение.

Свойства

Свойство Описание
accessKey Позволяет получить или задать клавишу доступа для элемента.
атрибут. value Позволяет получить или задать значение для атрибута.
clientHeight Возвращает высоту элемента в пикселях, включая внутренние отступы (padding). Внешние отступы (margin), рамки (border) и горизонтальная полоса прокрутки (если она есть) не учитываются.
clientWidth Возвращает ширину элемента в пикселях, включая внутренние отступы (padding). Внешние отступы (margin), рамки (border) и вертикальная полоса прокрутки (если она есть) не учитываются.
firstChild Возвращает ссылку на первый дочерний узел внутри указанного узла.
firstElementChild Возвращает первый дочерний элемент, если дочерних элементов нет, то возвращает null.
lastElementChild Возвращает последний дочерний элемент, если дочерних элементов нет, то возвращает null.
innerHTML Представляет содержимое, которое находится между открывающим и закрывающим тегами текущего элемента.
parentNode Возвращает родительский элемент указанного узла.
style Объект, представляющий атрибут style элемента, он позволяет получить или установить встроенный стиль элемента.
textContent Содержит текстовое содержимое узла и его потомков. <p>Внутри элемента &lt;p&gt;. <em>Внутри элемента &lt;em&gt;.</em></p> <script> var p = document.querySelector("p"); alert(p.textContent); // Внутри элемента <p>. Внутри элемента <em>. </script>

 

Объект event

Обработчики событий могут быть привязаны к объекту Element, Document, Window и т.д. Затем, в тот момент, когда происходит какое-либо событие, создаётся объект Event (событие), который передаётся в качестве аргумента обработчику события.

Интерфейс события объектной модели документа (DOM) доступен только через объект Event, который передаётся в качестве аргумента в обработчик события (в IE8 и более ранних версиях, объект Event доступен в виде глобальной переменной window.event). Следующий пример показывает, как объект Event передаётся обработчику события и может быть использован внутри него.

  window.addEventListener("keydown", foo, false);   function foo(event) { // параметр event неявно инициализируется объектом Event alert(event); }

Методы

Метод Описание
preventDefault() Отменяет событие, если оно является отменяемым, без остановки дальнейшего распространения события.
stopImmediatePropagation() Предотвращает любое дальнейшее распространение события.
stopPropagation() Предотвращает дальнейшее распространение текущего события.

Свойства

Свойство Описание
bubbles Возвращает логическое значение, которое указывает, является ли событие всплывающим.
cancelable Возвращает логическое значение, указывающее, является ли событие отменяемым.
currentTarget Возвращает целевой объект события, обрабатываемого в настоящее время.
defaultPrevented Получает значение, указывающее, следует ли отменить действие по умолчанию. True - действия по умолчанию должны быть отменены, false - действия по умолчанию разрешаются.
eventPhase Указывает, какая фаза события, в настоящее время проверяется.
target Ссылается на элемент, который является целевым объектом данного события.
timeStamp Получает время в миллисекундах, когда произошло событие.
type Имя события (без учета регистра).
isTrusted Получает значение, указывающее, было ли событие инициировано в браузере (события браузера и пользовательские события) или в сценарии.

 

Объект NodeList

Объект NodeList представляет собой коллекцию узлов. Такой объект возвращается, когда используются такие методы как document.querySelectorAll(), document.getElementsByName() или свойство Node.childNodes.

Объект NodeList ведёт себя, как доступный только для чтения массив объектов Element.

Обратиться к определённому узлу можно по числовому индексу. Первый узел находится под индексом 0:

  var parent = document.getElementById('parent'); var child_nodes = parent.childNodes; alert(child_nodes[1]);

В случае использования свойства Node.childNodes, NodeList представляет собой "живую" коллекцию, это означает, что изменения в DOM отражаются в коллекции:

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>Название веб-страницы</title>

</head>

<body>

<div id="parent"><p></p></div>

<script>

var parent = document.getElementById('parent');

// Присваиваем объект NodeList

var child_nodes = parent.childNodes;

console.log(child_nodes.length); // вернёт 1

// Добавим ещё один дочерний элемент

parent.appendChild(document.createElement('p'));

console.log(child_nodes.length); // вернёт 2

</script>

</body>

</html>

В других случаях NodeList является статической коллекцией, это означает, что любые последующие изменения в DOM не отражаются на содержании коллекции. Например, коллекция, возвращаемая методом document.querySelectorAll() является статической:

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>Название веб-страницы</title>

</head>

<body>

<div id="parent"><p></p></div>

<script>

var parent = document.getElementById('parent');

// Присваиваем объект NodeList

var child_nodes = document.querySelectorAll('p');

console.log(child_nodes.length); // вернёт 1

// Добавим ещё один дочерний элемент

parent.appendChild(document.createElement('p'));



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-11-28 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: