Типы узлов в дереве документа представлены специальными подынтерфейсами интерфейса Node. У любого объекта Node есть свойство nodeType, определяющее тип данного узла. Если свойство nodeType узла равно, например, константе Node.ELEMENT_NODE, значит, объект Node является также объектом Element, и можно использовать с ним все методы и свойства, определенные интерфейсом Element. В табл. 15.1 перечислены чаще всего встречающиеся в HTML_документах типы узлов и значения nodeType для каждого из них.
Таблица 15.1. Основные типы узлов
Интерфейс
Константа nodeType
Значение nodeType
Element
Node.ELEMENT_NODE
Text
Node.TEXT_NODE
Document
Node.DOCUMENT_NODE
Comment
Node.COMMENT_NODE
DocumentFragment
Node.DOCUMENT_FRAGMENT_NODE
Attr
Node.ATTRIBUTE_NODE
Корневым узлом DOM_дерева является объект Document. Свойство documentElement этого объекта ссылается на объект Element, представляющий корневой элемент до_ кумента. Для HTML_документов это тег <html>, явно или неявно присутствующий в документе. (Помимо корневого элемента узел Document может иметь другие до_ черние элементы, такие как объекты Comment.) В HTML_документах, как правило,
1 Стандарт DOM определяет интерфейсы, а не классы. Те, кто не знаком с термином «интерфейс» в объектно_ориентированном программировании, могут рассматри_ вать его как абстрактный класс. Позднее в этом обзоре модели DOM я более под_ робно объясню различия между классом и интерфейсом.
326 Глава 15. Работа с документами
Рис. 15.2. Неполная иерархия классов DOM API
наибольший интерес представляет элемент <body>, а не <html>, потому для удобст_ ва можно пользоваться свойством document.body для ссылки на этот элемент.
В DOM_дереве существует лишь один объект Document. Большинство узлов дерева – это объекты Element, которые представляют такие теги, как <html> и <i>, а также объекты Text, представляющие текстовые строки. Если в документе имеются комментарии, синтаксический анализатор сохраняет их в DOM_дереве в виде объектов Comment. На рис. 15.2 приводится неполная иерархия классов для этих и других базовых DOM_интерфейсов.