Документ: интерфейс Document
Поддержка : | | Поддерживается для XML-документов (XMLDOMDocument); для HTML-документов поддерживается частично. | | | DOM 1 полностью, DOM 2 частично. |
Интерфейс Document соответствует XML- или HTML-документу. Он является основой для доступа к содержанию документа и для создания его составляющих.
Свойство doctype
Синтаксис: документ.doctype Изменяемое: нет
Поддержка : | | Соответствует стандарту. | | | Соответствует стандарту. |
Свойство doctype возвращает тип данного документа (типа DocumentType). Для HTML-документов и для XML-документов, не имеющих декларации типа документа, возвращается null.
Свойство documentElement
Синтаксис: документ.documentElement Изменяемое: нет
Поддержка : | | Соответствует стандарту. | | | Соответствует стандарту. |
Свойство documentElement возвращает корневой элемент данного документа (типа Element). Для HTML-документов возвращается элемент HTML. Пример: оператор
alert(document.documentElement.tagName);
выведет на экран строку HTML.
Свойство implementation
Синтаксис: документ.implementation Изменяемое: нет
Поддержка : | | Только для XML-документов. | | | Соответствует DOM 1. |
Свойство implementation возвращает объект типа DOMImplementation, описывающий данную реализацию DOM.
Свойство styleSheets
Синтаксис: документ.styleSheets Изменяемое: нет
Поддержка : | | Только для HTML-документов. | | | Соответствует стандарту. |
Свойство styleSheets возвращает объект типа StyleSheetList, соответствующий списку внешних и внутренних таблиц стилей документа. Это свойство поддерживается только теми реализациями DOM, которые поддерживают динамические таблицы стилей.
Метод createAttribute
Синтаксис: документ.createAttribute(name) Аргументы: name - выражение типа DOMString Результат: новый объект Attr Исключения: INVALID_CHARACTER_ERR
Поддержка : | | Только для XML-документов. | | | Соответствует стандарту. |
Метод createAttribute создает новый объект типа Attr и возвращает указатель на него. Аргумент name задает имя создаваемого атрибута. У нового объекта атрибут nodeName имеет значение name, а атрибуты localName, prefix и namespaceURI равны null. В дальнейшем созданный атрибут может быть присвоен какому-либо элементу методом Element.setAttributeNode.
Пример создания атрибута для элемента HTML:
var myDiv = document.getElementById('idDiv'); var attr = document.createAttribute('temp'); attr.value = 'temporary'; myDiv.setAttributeNode(attr); alert(myDiv.getAttribute('temp'));
Оператор alert выведет строку temporary.
Пример создания атрибута в Microsoft XMLDOM:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = false; xmlDoc.load("c:\My Documents\books.xml"); var root = xmlDoc.documentElement; var newAttr = xmlDoc.createAttribute("temp"); newAttr.value = 'temporary'; root.setAttributeNode(attr); alert(root.getAttribute('temp'));
Здесь оператор alert также выведет строку temporary.
Метод createAttributeNS
Синтаксис: документ.createAttributeNS(namespaceURI, qualifiedName) Аргументы: namespaceURI, qualifiedName - выражения типа DOMString Результат: новый объект Attr Исключения: INVALID_CHARACTER_ERR, NAMESPACE_ERR
Поддержка : | | Не поддерживается. | | | Не поддерживается. |
Метод createAttributeNS создает новый объект типа Attr и возвращает указатель на него. Он предназначен для XML-документов и для HTML-документов может не поддерживаться. Аргумент namespaceURI задает URI пространства имен, а qualifiedName - ограниченное имя создаваемого атрибута в этом пространстве имен. Созданный объект типа Attr имеет следующие атрибуты:
Атрибут | Значение |
---|
nodeName | ограниченное имя | namespaceURI | URI пространства имен | prefix | префикс, извлеченный из ограниченного имени, или null, если ограниченное имя не содержит префикса | localName | локальное имя, извлеченное из ограниченного имени | name | ограниченное имя | nodeValue | пустая строка |
В дальнейшем созданный атрибут может быть присвоен какому-либо элементу методом Element.setAttributeNode.
Метод createCDATASection
Синтаксис: документ.createCDATASection(data) Аргументы: data - выражение типа DOMString Результат: новый объект CDATASection Исключения: NOT_SUPPORTED_ERR
Поддержка : | | Соответствует стандарту. | | | Соответствует стандарту. |
Метод createCDATASection создает новый объект типа CDATASection и возвращает указатель на него. Он предназначен только для XML-документов; попытка вызвать его в HTML DOM генерирует исключение NOT_SUPPORTED_ERR. Аргумент data задает содержимое создаваемой секции CDATA. Пример создания секции CDATA в Microsoft XMLDOM:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = false; xmlDoc.load("c:\My Documents\books.xml"); var root = xmlDoc.documentElement; var newSection = xmlDoc.createCDATASection("Hello World!"); root.appendChild(newSection);
Метод createComment
Синтаксис: документ.createComment(data) Аргументы: data - выражение типа DOMString Результат: новый объект Comment Исключения: нет
Поддержка : | | Только для XML-документов. | | | Соответствует стандарту. |
Метод createComment создает новый объект типа Comment и возвращает указатель на него. Аргумент data задает содержимое создаваемого комментария. Пример создания комментария в Gecko:
var root = document.documentElement.firstChild; var comm = document.createComment('Это комментарий.'); root.appendChild(comm);
Метод createDocumentFragment
Синтаксис: документ.createDocumentFragment() Результат: новый объект DocumentFragment Исключения: нет
Поддержка : | | Только для XML-документов. | | | Соответствует стандарту. |
Метод createDocumentFragment создает новый пустой объект типа DocumentFragment и возвращает указатель на него. Пример создания фрагмента документа в Gecko:
var elem = document.documentElement.firstChild; var o = document.createDocumentFragment(); elem.appendChild(o);
Метод createElement
Синтаксис: документ.createElement(tagName) Аргументы: tagName - выражение типа DOMString Результат: новый объект Element Исключения: INVALID_CHARACTER_ERR
Поддержка : | | Соответствует стандарту (см. прим. 2). | | | Соответствует стандарту. |
Метод createElement создает новый объект типа Element и возвращает указатель на него. Аргумент tagName задает тег создаваемого элемента. У нового объекта атрибут nodeName имеет значение tagName, а атрибуты localName, prefix и namespaceURI равны null. Если объект имеет атрибуты со значениями по умолчанию, то автоматически создаются соответствующие узлы Attr и присоединяются к элементу.
Примечания:
Для XML названия тегов элементов чувствительны к регистру. Для HTML они могут быть заданы в любом регистре, но при создании элемента преобразуются в прописные буквы.
Попытка создания в Internet Explorer элемента FRAME или IFRAME приводит либо к неустранимой ошибке обозревателя, либо, как минимум, к полному разрушению объектного дерева документа.
Пример создания элемента P и включения его в документ:
var text = document.createTextNode("Пример абзаца."); var elem = document.createElement("P"); elem.appendChild(text); document.body.appendChild(elem);
Метод createElementNS
Синтаксис: документ.createElementNS(namespaceURI, qualifiedName) Аргументы: namespaceURI, qualifiedName - выражения типа DOMString Результат: новый объект Element Исключения: INVALID_CHARACTER_ERR, NAMESPACE_ERR
Поддержка : | | Не поддерживается. | | | Не поддерживается. |
Метод createElementNS создает новый объект типа Element и возвращает указатель на него. Он предназначен для XML-документов и для HTML-документов может не поддерживаться. Аргумент namespaceURI задает URI пространства имен, а qualifiedName - ограниченное имя создаваемого элемента в этом пространстве имен. Созданный объект типа Element имеет следующие атрибуты:
Атрибут | Значение |
---|
nodeName | ограниченное имя | namespaceURI | URI пространства имен | prefix | префикс, извлеченный из ограниченного имени, или null, если ограниченное имя не содержит префикса | localName | локальное имя, извлеченное из ограниченного имени | tagName | ограниченное имя |
Метод createEntityReference
Синтаксис: документ.createEntityReference(name) Аргументы: name - выражение типа DOMString Результат: новый объект EntityReference Исключения: INVALID_CHARACTER_ERR, NOT_SUPPORTED_ERR
Поддержка : | | Соответствует стандарту. | | | Соответствует стандарту. |
Метод createEntityReference создает новый объект типа EntityReference и возвращает указатель на него. Он предназначен только для XML-документов; попытка вызвать его в HTML DOM генерирует исключение NOT_SUPPORTED_ERR. Аргумент name задает имя раздела, на который должна быть создана ссылка. Пример создания ссылки на раздел в Microsoft XMLDOM:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = false; xmlDoc.load("c:\My Documents\books.xml"); var root = xmlDoc.documentElement; var myEntity = xmlDoc.createEntityReference("newRef"); root.childNodes.item(0).appendChild(myEntity);
Метод createEvent
Синтаксис: документ.createEvent(type) Аргументы: type - выражение типа DOMString Результат: новый объект Event Исключения: NOT_SUPPORTED_ERR
Поддержка : | | Не поддерживается. | | | Не поддерживается. |
Метод createEvent создает новый объект Event и возвращает указатель на него. Этот метод должен поддерживаться только теми реализациями DOM, которые поддерживают события. Аргумент type задает тип создаваемого события:
Метод createProcessingInstruction
Синтаксис: документ.createProcessingInstruction(target, data) Аргументы: target, data - выражения типа DOMString Результат: новый объект ProcessingInstruction Исключения: INVALID_CHARACTER_ERR, NOT_SUPPORTED_ERR
Поддержка : | | Соответствует стандарту. | | | Соответствует стандарту. |
Метод createProcessingInstruction создает новый объект типа ProcessingInstruction и возвращает указатель на него. Он предназначен только для XML-документов; попытка вызвать его в HTML DOM генерирует исключение NOT_SUPPORTED_ERR. Аргумент target задает имя создаваемой директивы, а аргумент data - ее содержимое, т. е. все что следует в директиве после ее имени до закрывающего тега "?>". Пример создания директивы <?xml version="1.0"?> в Microsoft XMLDOM:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async = false; xmlDoc.load("c:\My Documents\books.xml"); var root = xmlDoc.documentElement; var pi = xmlDoc.createProcessingInstruction("xml", ' version="1.0"'); xmlDoc.insertBefore(pi, xmlDoc.childNodes.item(0));
Метод createTextNode
Синтаксис: документ.createTextNode(data) Аргументы: data - выражение типа DOMString Результат: новый объект Text Исключения: нет
Поддержка : | | Соответствует стандарту. | | | Соответствует стандарту. |
Метод createTextNode создает новый объект типа Text и возвращает указатель на него. Аргумент data задает текст, который присваивается атрибуту nodeValue объекта. Пример:
var text = document.createTextNode("Пример абзаца."); var elem = document.createElement("P"); elem.appendChild(text); document.body.appendChild(elem);
Метод getElementById
Синтаксис: документ.getElementById(elementId) Аргументы: elementId - выражение типа DOMString Результат: объект Element или null Исключения: нет
Поддержка : | | Только для HTML-документов. | | | Соответствует стандарту. |
Метод getElementById возвращает указатель на объект Element, имеющий заданный идентификатор elementId. Если такого объекта нет, то возвращается null; если же таких элементов несколько, то возвращается первый из них. Следующий пример
<P id="id1">Абзац 1 <P id="id1">Абзац 2 <SCRIPT> var o = document.getElementById("id1"); alert(o.firstChild.nodeValue);
...
выведет на экран текст Абзац 1.
Примечание. В HTML идентификатором элемента является значение его атрибута id. В XML такого атрибута нет, поэтому данный метод имеет смысл только применительно к тем элементам, у которых в DTD определен атрибут-идентификатор. Для остальных элементов этот метод должен возвращать null.
Метод getElementsByTagName
Синтаксис: документ.getElementsByTagName(tagname) Аргументы: tagname - выражение типа DOMString Результат: объект NodeList Исключения: нет
Поддержка : | | Соответствует стандарту (см. прим.). | | | Соответствует стандарту. |
Метод getElementsByTagName создает новый объект NodeList, состоящий из всех объектов Element, имеющих заданное имя и возвращает указатель на него. Аргумент tagname задает искомый тег; если он равен "*", то возвращается список всех элементов документа.
Примечание. Internet Explorer не поддерживает специальное имя "*". В нем вместо document.getElementsByTagName("*") следует использовать нестандартное свойство document.all .
Следующий пример выводит на экран количество графических образов в документе, а затем URI первого образа:
var imgList = document.getElementsByTagName("IMG"); alert(imgList.length); alert(imgList[0].src);
Метод getElementsByTagNameNS
Синтаксис: документ.getElementsByTagNameNS(namespaceURI, localName) Аргументы: namespaceURI, localName - выражения типа DOMString Результат: объект NodeList Исключения: нет
Поддержка : | | Не поддерживается. | | | Не поддерживается. |
Метод getElementsByTagNameNS создает новый объект NodeList, состоящий из всех объектов Element, имеющих заданное имя и возвращает указатель на него. Он предназначен для XML-документов и для HTML-документов может не поддерживаться. Аргумент namespaceURI задает URI пространства имен, а localName - локальное имя искомого тега в этом пространстве имен; если он равен "*", то возвращается список всех элементов документа, относящихся к данному словарю.
Метод importNode
Синтаксис: документ.importNode(node, deep) Аргументы: node - выражение типа Node deep - логическое выражение Результат: объект Node Исключения: NOT_SUPPORTED_ERR
Поддержка : | | Не поддерживается. | | | Соответствует стандарту. |
Метод importNode импортирует копию узла Node из другого документа в данный. При этом создается копия исходного узла, как описано ниже; исходный узел не изменяется. Метод возвращает указатель на созданный объект Node. Если аргумент deep равен true, то производится импорт поддерева исходного документа, начиная с данного узла; в противном случае импортируется только сам узел.
Возвращаемый узел не имеет предка (его атрибут parentNode равен null). Значения атрибутов nodeName, nodeType, prefix, localName и namespaceURI копируются из исходного узла. Дополнительная информация, копируемая в новый узел, зависит от типа узла (см. Таблицу 3):
Тип узла | Поведение |
---|
ATTRIBUTE_NODE | Атрибут ownerElement равен null, specified равен true. Все потомки исходного узла рекурсивно копируются в новый узел Attr, независимо от значения deep. | DOCUMENT_FRAGMENT_NODE | Если deep равен true, то производится импорт заданного фрагмента документа; в противном случае создается пустой узел DocumentFragment. | DOCUMENT_NODE, DOCUMENT_TYPE_NODE | Не могут быть импортированы. | ELEMENT_NODE | В новый узел Element копируются все атрибуты исходного узла, кроме заданных по умолчанию в исходном документе. Затем создаются атрибуты по умолчанию, принятые в данном документе для элементов с этим именем. Если deep равен true, то производится импорт всего поддерева исходного элемента. | ENTITY_NODE | Узлы Entity могут быть импортированы, но в DOM 2 объект DocumentType доступен только для чтения, поэтому импорт таких узлов не имеет смысла. | ENTITY_REFERENCE_NODE | Копируется только сам узел EntityReference, независимо от значения deep. Если в нашем документе есть определение раздела с данным именем, то оно заносится в новый узел. | NOTATION_NODE | Узлы Notation могут быть импортированы, но в DOM 2 объект >DocumentTypeдоступен только для чтения, поэтому импорт таких узлов не имеет смысла. | PROCESSING_INSTRUCTION_NODE | Копируются значения атрибутов target и data исходного узла. | TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE | Копируются значения атрибутов data и length исходного узла. |
1 2 3 4
8 8 8
| |