Неупорядоченный список узлов: интерфейс NamedNodeMap
Поддержка : |  | Для XML-документов соответствует стандарту (XMLDOMNamedNodeMap); для HTML-документов поддерживается в виде коллекций. | |  | Соответствует стандарту. |
Интерфейс NamedNodeMap реализует неупорядоченные списки узлов, доступ к которым осуществляется по имени узла. Эти списки также являются живыми, т. е. любое изменение документа влечет автоматическое изменение всех связанных с ним списков.
DOM допускает возможность доступа к элементам списка NamedNodeMap по их номеру в списке, но подчеркивает, что эта возможность не означает упорядоченности списка по какому-либо признаку.
Этот интерфейс имеет единственное свойство length, возвращающее количество узлов в списке, и несколько методов, обеспечивающих доступ к элементам списка:
Методы интерфейса NamedNodeMapСвойство | Модель | Описание |
---|
getNamedItem | DOM 1 | Возвращает узел с заданным именем. | getNamedItemNS | DOM 2 | Возвращает узел с заданным именем с учетом пространства имен. | item | DOM 1 | Возвращает узел с заданным номером. | removeNamedItem | DOM 1 | Удаляет узел с заданным именем. | removeNamedItemNS | DOM 2 | Удаляет узел с заданным именем с учетом пространства имен. | setNamedItem | DOM 1 | Добавляет узел в список. | setNamedItemNS | DOM 2 | Добавляет узел в список с учетом пространства имен. |
Свойство length
Синтаксис: список.length Изменяемое: нет
Поддержка : |  | Cоответствует стандарту. | |  | Соответствует стандарту. |
Свойство length возвращает количество элементов в данном списке. Допустимые индексы элементов списка лежат в диапазоне от 0 до length-1 включительно. Следующий пример выводит на экран количество атрибутов элемента BODY:
alert(document.body.attributes.length);
Метод getNamedItem
Синтаксис: список.getNamedItem(name) Аргументы: name - выражение типа DOMString Результат: узел Node или null Исключения: нет
Поддержка : |  | Только для XML-документов. | |  | Соответствует стандарту. |
Метод getNamedItem возвращает элемент списка узлов с заданным именем name в качестве результата. Если узла с таким именем в списке нет, то возвращается null. Пример:
alert(document.body.attributes.getNamedItem("text").nodeValue);
В Internet Explorer этот пример должен быть записан любым из двух следующих способов:
alert(document.body.attributes["text"].nodeValue); alert(document.body.attributes("text").nodeValue);
Метод getNamedItemNS
Синтаксис: список.getNamedItemNS(namespaceURI, localName) Аргументы: namespaceURI, localName - выражения типа DOMString Результат: узел Node или null Исключения: нет
Поддержка : |  | Нестандартная поддержка для XML-документов (см. прим.). | |  | Не поддерживается. |
Метод getNamedItemNS возвращает элемент списка узлов с заданным именем в качестве результата. Если узла с таким именем в списке нет, то возвращается null. Этот метод предназначен для XML-документов и для HTML-документов может не поддерживаться. Аргумент namespaceURI задает URI пространства имен, а localName - локальное имя узла.
Примечание. В Microsoft XML DOM этот метод имеет вид getQualifiedItem(localName, namespaceURI).
Метод item
Синтаксис: список.item(index) Аргументы: index - числовое выражение Результат: узел Node или null Исключения: нет
Поддержка : |  | Соответствует стандарту. | |  | Соответствует стандарту. |
Метод item возвращает элемент списка узлов с заданным индексом в качестве результата. Если индекс выходит за пределы диапазона элементов списка, то возвращается null. Пример:
alert(document.body.attributes.item(0).nodeName);
JavaScript позволяет нам записать обращение к элементу списка более компактно. Предыдущий оператор может выглядеть так:
alert(document.attributes[0].nodeName);
Internet Explorer поддерживает еще одну форму обращения к элементу списка, а именно:
alert(document.attributes(0).nodeName);
Однако, эта форма является нестандартной, и ей лучше не пользоваться.
Метод removeNamedItem
Синтаксис: список.removeNamedItem(name) Аргументы: name - выражение типа DOMString Результат: узел Node Исключения: NOT_FOUND_ERR, NO_MODIFICATION_ALLOWED_ERR
Поддержка : |  | Только для XML-документов. | |  | Соответствует стандарту. |
Метод removeNamedItem удаляет элемент списка узлов с заданным именем name и возвращает его в качестве результата. Если удаляемый узел является атрибутом элемента, имеющим значение по умолчанию, то сразу после его удаления он вновь появляется в списке со значением по умолчанию. Пример:
document.body.attributes.removeNamedItem("text");
Метод removeNamedItemNS
Синтаксис: список.removeNamedItemNS(namespaceURI, localName) Аргументы: namespaceURI, localName - выражения типа DOMString Результат: узел Node Исключения: NOT_FOUND_ERR, NO_MODIFICATION_ALLOWED_ERR
Поддержка : |  | Нестандартная поддержка для XML-документов (см. прим.). | |  | Не поддерживается. |
Метод removeNamedItemNS удаляет элемент списка узлов с заданным именем и возвращает его в качестве результата. Если удаляемый узел является атрибутом элемента, имеющим значение по умолчанию, то сразу после его удаления он вновь появляется в списке со значением по умолчанию. Этот метод предназначен для XML-документов и для HTML-документов может не поддерживаться. Аргумент namespaceURI задает URI пространства имен, а localName - локальное имя узла.
Примечание. В Microsoft XML DOM этот метод имеет вид removeQualifiedItem(localName, namespaceURI).
Метод setNamedItem
Синтаксис: список.setNamedItem(arg) Аргументы: arg - выражение типа Node Результат: узел Node или null Исключения: WRONG_DOCUMENT_ERR, NO_MODIFICATION_ALLOWED_ERR, INUSE_ATTRIBURE_ERR
Поддержка : |  | Только для XML-документов. | |  | Соответствует стандарту. |
Метод setNamedItem добавляет элемент arg в данный список узлов. Если узел с таким именем в списке есть, то он заменяется на arg и возвращается в качестве результата. Если узла с таким именем в списке нет, то arg вставляется в список и возвращается null. Пример:
var attr = document.createAttribute("text"); attr.nodeValue = "red"; document.body.attributes.setNamedItem(attr);
Метод setNamedItemNS
Синтаксис: список.setNamedItemNS(arg) Аргументы: arg - выражение типа Node Результат: узел Node или null Исключения: WRONG_DOCUMENT_ERR, NO_MODIFICATION_ALLOWED_ERR, INUSE_ATTRIBURE_ERR
Поддержка : |  | Не поддерживается. | |  | Не поддерживается. |
Метод setNamedItemNS добавляет элемент arg в данный список узлов. Если узел с таким именем в списке есть, то он заменяется на arg и возвращается в качестве результата. Если узла с таким именем в списке нет, то arg вставляется в список и возвращается null. Этот метод предназначен для XML-документов и для HTML-документов может не поддерживаться. Он отличается от метода setNamedItem тем, что при вставке узла используются URI его пространства имен, и его локальное имя. 1 2 3
8 8 8
| |