Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / DHTML /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Базовая объектная модель документа - Программирование от RIN.RU
Базовая объектная модель документа



Документ: интерфейс Document


Поддержка :Поддерживается для XML-документов (XMLDOMDocument); для HTML-документов поддерживается частично.
DOM 1 полностью, DOM 2 частично.



Интерфейс Document соответствует XML- или HTML-документу. Он является основой для доступа к содержанию документа и для создания его составляющих.


Свойства интерфейса Document
СвойствоИзменяемоеМодельОписание
doctypeНетDOM 1Тип документа.
documentElementНетDOM 1Корневой элемент документа.
implementationНетDOM 1Реализация DOM.
styleSheetsНетDOM 2Список таблиц стилей документа.



Методы интерфейса Document
СвойствоМодельОписание
createAttributeDOM 1Создает атрибут.
createAttributeNSDOM 2Создает атрибут с учетом пространства имен.
createCDATASectionDOM 1Создает секцию CDATA.
createCommentDOM 1Создает комментарий.
createDocumentFragmentDOM 1Создает новый фрагмент документа.
createElementDOM 1Создает новый элемент.
createElementNSDOM 2Создает элемент с с учетом пространства имен.
createEntityReferenceDOM 1Создает ссылку на раздел.
createEventDOM 2Создает новый объект Event.
createProcessingInstructionDOM 1Создает директиву.
createTextNodeDOM 1Создает новый текстовый узел.
getElementByIdDOM 2Возвращает элемент с заданным идентификатором.
getElementsByTagNameDOM 1Возвращает коллекцию всех элементов, имеющих данный тег.
getElementsByTagNameNSDOM 2Возвращает коллекцию всех элементов, имеющих данный тег с учетом пространства имен.
importNodeDOM 2Импортирует узел из другого документа.



Свойство 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ограниченное имя
namespaceURIURI пространства имен
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 и присоединяются к элементу.


Примечания:



  1. Для XML названия тегов элементов чувствительны к регистру. Для HTML они могут быть заданы в любом регистре, но при создании элемента преобразуются в прописные буквы.


  2. Попытка создания в 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ограниченное имя
namespaceURIURI пространства имен
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  Обсудить в чате

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь