Книга: JavaScript. Подробное руководство, 6-е издание

Node

Node

Все объекты в дереве документа (включая сам объект Document) реализуют интерфейс Node, который предоставляет фундаментальные свойства и узлы для выполнения манипуляций с деревом. Свойство parentNode и массив childNodes[] позволяют передвигаться вверх и вниз по дереву документа. Можно перечислить дочерние узлы данного узла, выполнив цикл по элементам childNodes[] или используя свойства firstChild и nextSibling (или свойства lastChild и previousSibling для обхода в обратном порядке). Методы appendChild(), insertBefore(), removeChild() и replaceChild() позволяют модифицировать дерево документа, изменяя дочерние узлы данного узла.

Каждый объект в дереве документа реализует как интерфейс Node, так и более специализированный интерфейс, например, Element или Text. Свойство nodeType указывает, какой подынтерфейс реализует узел. Это свойство позволяет проверить тип узла перед тем, как использовать свойства и методы более специализированного интерфейса. Например:

var n;
if (n.nodeType == 1) {
  // Содержит узел, с которым выполняются операции
  // Или использовать константу Node.ELEMENT_N0DE
  var tagname = n.tagName; // Если узел является узлом Element, это имя тега
}

Константы

unsigned short ELEMENT_NODE = 1
unsigned short TEXT_N0DE = 3
unsigned short PROCESSING_INSTRUCTION_NODE = 7
unsigned short C0MMENT_N0DE = 8
unsigned short D0CUMENT.N0DE = 9
unsigned short DOCUMENT_TYPE_NODE = 10
unsigned short D0CUMENT_FRAGMENT_N0DE = 11

Эти константы определяют возможные значения свойства nodeType. Обратите внимание, что они являются статическими свойствами функции-конструктора Node() -они не являются свойствами отдельных объектов Node. Отметьте также, что они не определены в ІE версии 8 и ниже. Для совместимости в сценариях можно использовать числовые значения констант или определить собственные константы.

unsigned short D0CUMENT_P0SITI0N_DISC0NNECTED = 0x01

unsigned short D0CUMENT_P0SITI0N_PRECEDING = 0x02

unsigned short D0CUMENT_P0SITI0N_F0LL0WING = 0x04

unsigned short D0CUMENT_P0SITI0N_C0NTAINS = 0x08

unsigned short D0CUMENT_P0SITI0N_C0NTAINED_BY = 0x10

Эти константы определяют биты, которые могут быть установлены или сброшены в значении, возвращаемом методом compareDocumentPosition().

Свойства

readonly string baseURI

Определяет базовый URL-адрес для данного объекта Node, который будет использоваться при разрешении относительных URL-адресов. Для всех узлов в HTML-документах этот URL-адрес определяется элементом <base> или свойством Document. URL, из значения которого исключается идентификатор фрагмента.

readonly NodeList childNodes

Это свойство является объектом, подобным массиву, содержащим дочерние узлы текущего узла. Это свойство никогда не должно иметь значение null: для узлов, не имеющих дочерних узлов, childNodes - это массив со свойством length, равным нулю. Обратите внимание: объект NodeList «живой», т. е. любое изменение в списке дочерних узлов элемента немедленно становится видимым через объект NodeList.

readonly Node firstChild

Первый дочерний узел этого узла или null, если узел не имеет дочерних узлов.

readonly Node lastChild

Последний дочерний узел этого узла или null, если узел не имеет дочерних узлов.

readonly Node nextSibling

Смежный узел, непосредственно следующий за данным узлом в массиве chiIdNodes[] узла parentNode, или null, если такого узла нет.

readonly string nodeName

Имя узла. Для узлов Element определяет имя тега элемента, которое может быть также получено с помощью свойства tagName интерфейса Element. Для большинства других типов узлов значение является строковой константой, зависящей от типа узла.

readonly unsigned short nodeType

Тип узла, т. e. информация о том, какой подынтерфейс реализует узел. Допустимые значения определяются перечисленными выше константами. Однако т. к. эти константы не поддерживаются в Internet Explorer, вместо них могут использоваться числовые значения. В HTML-документах распространенные значения для этого свойства таковы: 1 - для узлов Element, 3 - для узлов Text, 8- для узлов Comment и 9 - для единственного узла Document верхнего уровня.

string nodeValue

Значение узла. Для узлов Text содержит текстовое содержимое.

readonly Document ownerDocument

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

readonly Node parentNode

Родительский узел (или узел-контейнер) этого узла или null, если родительского узла не существует. Обратите внимание: узлы Document и DocumentFragment никогда не имеют родительских узлов. Кроме того, в узлах, удаленных из документа, а также в только что созданных, но еще не вставленных в дерево документа узлах свойство parentNode равно null.

readonly Node previousSibling

Смежный узел, непосредственно предшествующий данному узлу в массиве chiIdNodes[] родительского узла parentNode, или null, если такого узла нет.

string textContent

Для узлов Text и Comment это свойство является синонимом свойства data. Для узлов Element и DocumentFragment это свойство возвращает объединенное содержимое всех вложенных узлов Text. Операция присваивания этому свойству узлов Element или DocumentFragment замещает все вложенные узлы этого элемента или фрагмента новым единственным узлом Text с присвоенным свойству значением.

Методы

Node appendChild(Node newChild)

Этот метод добавляет узел newChild в документ, вставляя его в качестве последнего дочернего узла. Если узел newChild уже присутствует в дереве документа, он удаляется из дерева и вставляется в новое место. Если узел newChild является узлом DocumentFragment, сам узел не вставляется, а вместо этого в конец массива childNodes[] данного узла вставляются по порядку все дочерние узлы объекта DocumentFragment. Обратите внимание, что узел из другого документа (или созданный другим документом) не может быть вставлен в текущий документ. То есть свойство ownerDocument узла newChild должно совпадать со свойством ownerDocument данного узла. (См. Document.adoptNode()). Возвращает переданный ему узел.

Node cloneNode(boolean deep)

Создает и возвращает копию узла, для которого он вызван. Если в аргументе ему передается значение true, он также рекурсивно копирует всех потомков узла. В противном случае он копирует только данный узел, но не его дочерние узлы. Возвращаемый узел не является частью дерева документа, а его свойство parentNode имеет значение null. Когда копируется узел Element, то копируются и все его атрибуты. Однако следует отметить, что функции-обработчики событий, зарегистрированные для узла, не копируются.

unsigned short compareDocumentPosition(Node other)

Сравнивает позицию данного узла в документе с позицией узла other и возвращает число, биты которого описывают отношения между узлами. Если сравниваемые' узлы являются одним и тем же узлом, все биты в результате будут сброшены, т.е. метод вернет 0. Иначе в возвращаемом значении будет установлен один или более битов. Константы D0CUMENT_P0SITI0N_, перечисленные выше, являются символическими именами каждого из битов и имеют следующее значение:


boolean hasChildNodes()

Возвращает true, если данный узел имеет один или более дочерних узлов, или false - в противном случае.

Node insertBefore(Node newChild, Node refChild)

Вставляет узел newChild в дерево документа как дочерний узел данного узла и возвращает вставленный узел. Новый узел позиционируется в массиве childNodes[] данного узла так, что он располагается непосредственно перед узлом refChild. Если аргумент refChild имеет значение null, узел newChild вставляется в конец массива childNodes[], как это делает метод appendChild(). Обратите внимание, что является ошибкой передавать в аргументе refChild узел, не являющийся дочерним по отношению к данному узлу.

Если узел newChild уже включен в дерево документа, он удаляется из дерева и затем вставляется в новую позицию. Если newChild является узлом фрагмента DocumentFragment, то в указанную позицию вставляется не сам узел, а все его дочерние узлы, в исходном порядке следования.

boolean isDefaultNamespace(string namespace)

Возвращает true, если URL-адрес пространства имен namespace совпадает с URL-адресом пространства имен по умолчанию, который возвращает вызов lookupNamespaceURI(null), и false - в противном случае.

boolean isEqualNode(Node other)

Возвращает true, если данный узел и узел other являются идентичными, т.е. имеют один и тот же тип, имя тега, атрибуты и (рекурсивно) дочерние узлы. Возвращает false, если два узла не являются эквивалентными.

boolean isSameNode(Node other)

Возвращает true, если данный узел и узел other являются одним и тем-же узлом, и false - в противном случае. Вмесло этого метода можно также просто использовать оператор ==.

string lookupNamespaceURI(string prefix)

Возвращает URL-адрес пространства имен, связанного с указанным префиксом пространства имен prefix, или null, если такой префикс не определен. Если аргумент prefix имеет значение null, возвращает URL-адрес пространства имен по умолчанию.

string lookupPrefix(string namespace)

Возвращает префикс пространства имен, связанного с указанным URL-адресом пространства имен, или null, если такое пространство имен не определено.

void normalize()

Нормализует все узлы, являющиеся потомками данного, объединяя смежные узлы и удаляя пустые. Обычно документы не имеют пустых или смежных текстовых узлов, но они могут появиться в результате добавления и удаления узлов сценарием.

Node removeChild(Node oldChild)

Этот метод удаляет дочерний узел oldChild из массива childNodes[] данного узла. Вызов этого метода с узлом, не являющимся дочерним, будет ошибкой. Метод removeChild() возвращает oldChild после его удаления. Старый дочерний узел oldChild продолжает быть действительным узлом и может быть позднее вставлен в документ.

Node replaceChild(Node newChild. Node oldChild)

Замещает узел oldChild в дереве документа другим узлом newChild. Узел oldChild должен быть дочерним для данного узла. Если newChild уже является частью документа, то он сначала удаляется из документа перед повторной вставкой в новую позицию. Если newChild является узлом фрагмента Document Fragment, то вместо узла newChild в позицию, ранее занятую узлом oldChild, по порядку вставляются все его дочерние узлы.

Оглавление книги


Генерация: 0.045. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз