Node это интерфейс, от которого наследуют несколько типов DOM, он так же позволяет различным типам быть обработанными(или протестированными).
Следующие интерфейсы полностью наследуют от Node его методы и свойства: Document, Element, CharacterData (which Text, Comment, и CDATASection inherit), ProcessingInstruction, DocumentFragment, DocumentType, Notation, Entity, EntityReference
Эти интерфейсы могут возвращать null в особых случаях, когда методы и свойства не уместны. Они могут сбросить исключение - например, когда добавляются дети к типу узла, у которого не может их существовать.
Свойства
Наследует свойства от родителей EventTarget.[1]
Node.baseURIТолько для чтения- Возвращает
DOMStringпоказывающие основной URL. Понятие основного URL изменяется из одного языка в другой; В HTML, это соответствует протоколу , доменному имени и структуре каталогов, все до последнего'/'. Node.baseURIObject- (Не доступно для веб-контента.) Только для чтения. Объект
nsIURI, представляющий базовый URI элемента. Node.childNodesТолько для чтения- Возвращает живой
NodeList, содержащий всех потомков данного узла. ЖивойNodeListозначает то, что если потомкиузлаизменяются, объектNodeListавтоматически обновляется. Node.firstChildТолько для чтения- Возвращает
Node, представляющий первый прямой узел потомок узла илиnull,если узел не имеет потомков. Node.lastChildТолько для чтения- Возвращает
Node, представляющий последний прямой узел потомок узла илиnull, если узел не имеет потомков. Node.localNameТолько для чтения- Возвращает
DOMStringпредставляющий локальную часть условного имени элемента. В Firefox 3.5 и более ранних версиях, свойство локального имени в верхнем регистре для HTML элементов (но не XHTML элементов). В более поздних версиях, такого не произошло, и свойство находится в нижнем регистре для HTML и XHTML . Хотя недавние спецификации требуют отlocalNameбыть определенным как интерфейсElement, но браузеры основанные на Gecko все еще реализуют его как интерфейсNode. Node.namespaceURIТолько для чтения- Пространство имен URI данного узла или
null,если нет пространства имен. В Firefox 3.5 и более ранних версиях, HTML элементы не имееют пространства имен. В более поздних версиях, HTML элементы находятся в пространстве именhttp://www.w3.org/1999/xhtmlдля деревьев HTML и XML.
Хотя недавние спецификации требуютnamespaceURIбыть определенным как интерфейсElement, но браузеры основанные на Gecko все еще реализуют его как интерфейсNode. Node.nextSiblingТолько для чтения- Возвращает
Nodeпредставляющий следующий узел в древе илиnull,если не такого узла. Node.nodeNameТолько для чтения- Возвращает
DOMStringсодержащий имяузла. Структура имени будет отличаться от типа имени. Например,HTMLElementбудет содержать имя соответствующего тега:'audio'дляHTMLAudioElement, узелTextбудет строкой'#text'или узелDocumentбудет строкой'#document'. Node.nodePrincipalnsIPrincipalпредставляет основной узел.Node.nodeTypeТолько для чтения- Возвращает беззнаковое короткое число
(unsigned short) представляющее тип узла. Возможные значения:Имя Значение ELEMENT_NODE1ATTRIBUTE_NODE2TEXT_NODE3CDATA_SECTION_NODE4ENTITY_REFERENCE_NODE5ENTITY_NODE6PROCESSING_INSTRUCTION_NODE7COMMENT_NODE8DOCUMENT_NODE9DOCUMENT_TYPE_NODE10DOCUMENT_FRAGMENT_NODE11NOTATION_NODE12 Node.nodeValue- Это
DOMString, представляющее значение объектов. Для большинства типовNode, возвращаетnullи любой набор операция игнорируется. Для узлов типаTEXT_NODE(Textobjects),COMMENT_NODE(Commentobjects), иPROCESSING_INSTRUCTION_NODE(ProcessingInstructionobjects), значение соответствует текстовым данным, содержащихся в объекте. Node.ownerDocumentТолько для чтения- Возвращает
Documentк которому принадлежит этот узел. Если нет связанного сним документа, возвращаетnull. Node.parentNodeТолько для чтения- Возвращает
Nodeкоторый является родителем этого узла. Если нет такого узла, по причине того, что узел находится вверху древа или не относится к древу, данное свойство вернетnull. Node.parentElementТолько для чтения- Возвращает
Elementкоторый является родителем данного узла. Если узел не имеет родителя или если родитель неElement, это свойство вернетnull. Node.prefixТолько для чтенияDOMStringпредставляющий префикс пространства имен узла илиnullесли нет префикса точно определенного.
Хотя недавние спецификации требуют того, чтобыпрефиксбыл определен как интерфейсElement, браузеры основанные на Gecko еще реализовывают его как интерфейсNode.Node.previousSiblingТолько для чтения- Возвращают
Nodeпредставляющий предыдущий узел древа илиnull, если нет такого узла. Node.textContent- Это
DOMStringпредставляющее текстовый контент элемента и всех его потомков.
Методы
Наследует методы от своих родителей EventTarget.[1]
Node.appendChild()- Вставляет
Nodeкак последний дочерний узел данного элемента. Node.cloneNode()- Клонирует
Node, и опционально, все его компоненты. По умолчанию, оно клонирует содержимое узла. Node.compareDocumentPosition()Node.contains()Node.getFeature()- ...
Node.getUserData()- Позволяет пользователю получить некоторый
DOMUserDataот узла. Node.hasAttributes()- Возвращает
Booleanпоказывающий, есть ли у элемента какие-либо атрибуты или нет. Node.hasChildNodes()- Возвращает
Booleanпоказывающий, есть ли у элемента дочерние узлы или нет. Node.insertBefore()- Вставляет первым
Nodeданный в качестве параметра, непосредственно перед вторым, потомком данного элементаNode. Node.isDefaultNamespace()Node.isEqualNode()Node.isSameNode()Node.isSupported()- Возвращает
Booleanфлаг содержащий результаты теста, реализует ли реализация DOM конкретную особенность и поддерживается ли эта особенность конкретным узлом. Node.lookupPrefix()Node.lookupNamespaceURI()Node.normalize()- Очищает все текстовые узлы под этим элементом (поглотить смежный, удалить пустой).
Node.removeChild()- Удаляет дочерний узел из текущего элемента, который должен быть потомком текущего узла.
Node.replaceChild()- Заменяет одного потомка
Nodeиз существующего на второй указанный в параметре. Node.setUserData()- Позволяет пользователю присоединить или удалить
DOMUserDataк узлу.
Примеры
Просмотреть все дочерние узлы
Следующая функция рекурсивный цикл всех дочерних узлов узла и она исполняет вызов функции относительно их (и себя относительно родительского узла).
function DOMComb (oParent, oCallback) {
if (oParent.hasChildNodes()) {
for (var oNode = oParent.firstChild; oNode; oNode = oNode.nextSibling) {
DOMComb(oNode, oCallback);
}
}
oCallback.call(oParent);
}
Синтаксис
DOMComb(parentNode, callbackFunction);
Описание
Рекурсивный цикл всех дочерних узлов parentNode и самого parentNode, выполняет callbackFunction относительно их как эти объекты.
Параметры
Пример использования
Следующий пример отправляет в console.log текстовое содержимое body:
function printContent () {
if (this.nodeValue) { console.log(this.nodeValue); }
}
onload = function () {
DOMComb(document.body, printContent);
};
Удалить все потомки, вложенные в узел
Element.prototype.removeAll = function () {
while (this.firstChild) { this.removeChild(this.firstChild); }
return this;
};
Пример использования
/* ... как альтернатива document.body.innerHTML = "" ... */ document.body.removeAll();
Спецификации
| Сецификация | Статус | Коментарий |
|---|---|---|
| DOM Определение 'Node' в этой спецификации. |
Живой стандарт | Удалены следующие свойства: attributes, namespaceURI, prefix, и localName.Удалены следующие методы: isSupported(), hasAttributes(), isSameNode(), getFeature(), setUserData(), и getUserData(). |
| Document Object Model (DOM) Level 3 Core Specification Определение 'Node' в этой спецификации. |
Устаревшая | Методы insertBefore(), replaceChild(), removeChild(), and appendChild() возвращают еще один вид ошибок (NOT_SUPPORTED_ERR) если вызваны из Document.Метод normalize() был модифицирован таким образом, что узел Text также может быть нормализован, если надлежащий флаг DOMConfiguration установлен.Добавлены следующие методы: compareDocumentPosition(), isSameNode(), lookupPrefix(), isDefaultNamespace(), lookupNamespaceURI(), isEqualNode(), getFeature(), setUserData(), and getUserData().Добавлены следующие свойства: baseURI and textContent. |
| Document Object Model (DOM) Level 2 Core Specification Определение 'Node' в этой спецификации. |
Устаревшая | Свойство ownerDocument был слегка изменен, так что DocumentFragment также возвращает null.Добавлены следующие свойства: namespaceURI, prefix, and localName.Добавлены следующие методы: normalize(), isSupported() and hasAttributes(). |
| Document Object Model (DOM) Level 1 Specification Определение 'Node' в этой спецификации. |
Устаревшая | Изначальное описание. |
Совместимость с браузерами
| Свойство | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| Базовая поддержка | (Да) | 1.0 (1.7 или ранее) | (Да) | (Да) | (Да) |
getFeature() |
Нет | Поддерживаемые от 1.0 (1.7 или ранее) до 6.0 (6.0). Удалено в 7.0 (7.0) |
? | Нет | Нет |
getUserData(), setUserData() and hasAttributes() |
Нет | Поддерживаемые от 1.0 (1.7 или ранее) до 21.0 (21.0). Удалено в 22.0 (22.0) |
? | Нет | Нет |
isSameNode() |
Нет | Поддерживаемые от 1.0 (1.7 или ранее) до 9.0 (9.0). Удалено в 10.0 (10.0) |
? | Нет | Нет |
isSupported() |
? | Поддерживаемые от 1.0 (1.7 или ранее) до 21.0 (21.0). Удалено в 22.0 (22.0) |
? | ? | ? |
attributes |
Нет | Поддерживаемые от 1.0 (1.7 или ранее) до 21.0 (21.0). Перемещено к Element в 22.0 (22.0) |
Нет | Нет | Нет |
| Свойство | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| Базовая поддержка | (Да) | 1.0 (1.0) | (Да) | (Да) | (Да) |
getFeature() |
Нет | Поддерживаемые от 1.0 (1.7 или ранее) до 6.0 (6.0). Удалено в 7.0 (7.0) |
? | Нет | Нет |
[1] Webkit и Blink неверно не делают Node наследуя от EventTarget.

