Интерфейс Document
Интерфейс Document представляет весь документ HTML.
Для этого интерфейса определены свойства documentElement и doctype, возвращающие соответственно корневой узел данного документа и узел типа DocumentType. Оба свойства доступны только для чтения. Свойство doctype не определено в Internet Explorer.
Пример 4.5.4. Использование свойств интерфейса Document:
1. Получение характеристик и атрибутов корневого узла
// Вывод характеристик узла
// для корневого узла (свойства documentElement)
alert("documentElementName=" +
document.documentElement.nodeName +
"\ndocumentElementType=" +
document.documentElement.nodeType +
"\ndocumentElementValue=" +
document.documentElement.nodeValue);
// Получение списка атрибутов корневого узла
documentElementAttrs = document.documentElement.attributes;
// Начальное значение строки вывода
output = "Количество атрибутов: " +
documentElementAttrs.length;
// Получение имен и значений атрибутов в цикле
for(i=0;i<documentElementAttrs.length;i++)
// Получение имени и значения текущего атрибута
output += "\n" + (i + 1) + ". Имя=" +
documentElementAttrs[i].nodeName +
" Значение='" +
documentElementAttrs[i].nodeValue + "'";
// Вывод имен и значений атрибутов корневого узла
alert(output);
Вывод фрагмента (в Web-браузере Firefox) имеет следующий вид:
2. Получение характеристик и атрибутов узла doctype
// Вывод характеристик узла для свойства doctype
alert("documentDoctypeName=" + document.doctype.nodeName +
"\ndocumentDoctypeType=" + document.doctype.nodeType +
"\ndocumentDoctypeValue=" + document.doctype.nodeValue);
Вывод фрагмента (в Web-браузере Firefox) имеет следующий вид:
Для интерфейса Document определены следующие методы создания узлов разных типов в документе:
· createDocumentFragment() – создает пустой узел типа DocumentFragment с именем #document-fragment и возвращает созданный узел;
· createElement(имя-тега)– создает новый узел типа Element с заданным именем-тега и возвращает созданный узел;
· createTextNode(содержимое)– создает новый узел типа Text с именем #text и с указанным текстовым содержимым и возвращает созданный узел;
· createAttribute(имя-атрибута)– создает новый узел типа Attr с заданным именем-атрибута и возвращает созданный узел;
· createComment(данные) – создает новый узел типа Comment с указанным текстовым содержимым и возвращает созданный узел.
В интерфейсе Document определены также два метода получения узлов типа Element:
· getElementById(значение-атрибута-id)– возвращает узел (Node) типа Element с заданным значением атрибута id (если в документе несколько элементов с одинаковым значением атрибута id, возвращается только первый элемент);
· getElementsByTagName(имя-тега) – возвращает список (NodeList) узлов типа Element с заданным именем-тега.
Кроме того, интерфейс Document наследует все свойства и методы интерфейса Node.
Пример 4.5.5. Использование методов интерфейса Document:
1. Добавление нового абзаца в документ HTML в примере 4.5.1:
// Получение элемента body
var bodyElement = document.getElementsByTagName("body")[0];
// Создание нового абзаца (элемента p)
var newPar = document.createElement("p");
// Ввод содержимого нового абзаца
// с помощью функции prompt
var content =
prompt ("Введите содержание нового абзаца","");
// Создание нового текстового узла
// с введенным содержимым
var newParContent = document.createTextNode(content);
// Добавление нового абзаца
// к дочерним узлам элемента body
bodyElement.appendChild(newPar);
// Добавление текстового узла
// как дочернего узла элемента p
newPar.appendChild(newParContent);
Вывод Web-страницы имеет следующий вид:
2. Добавление заголовка в начало тела документа HTML в примере 4.5.1 (используется элемент bodyElement из примера 4.5.5(1) и учитываются изменения, произведенные в этом примере):
// Ввод содержимого заголовка с помощью функции prompt
var heading = prompt("Введите заголовок документа","");
// Создание заголовка с помощью элемента h1
var headingNode = document.createElement("h1");
// Создание текстового узла для заголовка
var headingContent = document.createTextNode(heading);
// Вставка заголовка в тело документа перед абзацем
bodyElement.insertBefore(headingNode,
bodyElement.firstChild);
// Вставка текстового узла в заголовок
headingNode.appendChild(headingContent);
Вывод Web-страницы имеет следующий вид:
3. Замена выделения жирным шрифтом и курсивом (элемент span) на подчеркивание (элемент u) для документа HTML в примере 4.5.1 (учитываются изменения, произведенные в примерах 4.5.5(1) и 4.5.5(2)):
// Создание заменяющего элемента u
var replacingNode = document.createElement("u");
// Получение заменяемого элемента span
var replacedNode = document.getElementById("sp1");
// Получение текстового содержимого
// заменяемого элемента span
var replacing = replacedNode.firstChild.nodeValue;
// Замена элементов
document.getElementById("p1").replaceChild(replacingNode,
replacedNode);
// Создание текстового узла для элемента u
var replacingContent = document.createTextNode(replacing);
// Добавление текстового узла
// как дочернего узла элемента u
replacingNode.appendChild(replacingContent);
Вывод Web-страницы имеет следующий вид:
4. Удаление рисунка с id="i1" из документа HTML в примере 4.5.1:
// Определение элемента p
p1Element = document.getElementById("p1");
// Удаление рисунка с id="img1"
p1Element.removeChild(document.getElementById("i1"));
Вывод Web-страницы имеет следующий вид: