Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

15.2.6. document.all[]

До того, как модель DOM была стандартизована, в IE4 была реализована коллекция

document.all[]
, представляющая все элементы (кроме текстовых узлов
Text
) в документе. Впоследствии коллекцию
document.all[]
заменили стандартные методы, такие как
getElementByld
и
getElementsByTagName,
и теперь она считается устаревшей и не должна использоваться. Однако в свое время появление этой коллекции произвело целую революцию, и даже сейчас все еще можно встретить
сценарии, использующие ее следующими способами:

document.all[0] // Первый элемент документа

document.all["navbar"] // Элемент (или элементы) со значением "navbar”

// в атрибуте id или name

document.all.navbar // То же самое

document.all.tags("div") // Все элементы <div> в документе

document.all.tags("p”)[0] // Первый элемент <р> в документе

15.3. Структура документа и навигация по документу

После выбора элемента документа иногда бывает необходимо отыскать структурно связанные части документа (родитель, братья, дочерний элемент). Объект

Document
можно представить как дерево объектов
Node
, как изображено на рис. 15.1. Тип
Node
определяет свойства, позволяющие перемещаться по такому дереву, которые будут рассматриваться в разделе 15.3.1. Существует еще один прикладной интерфейс навигации по документу, как дерева объектов
Element
. Этот более новый (и часто более простой в использовании) прикладной интерфейс рассматривается в разделе 15.3.2.

15.3.1. Документы как деревья узлов

Объект

Document
, его объекты
Element
и объекты
Text
, представляющие текстовые фрагменты в документе, - все они являются объектами
Node
. Класс
Node
определяет следующие важные свойства:

parentNode

Родительский узел данного узла или null для узлов, не имеющих родителя, таких как

Document
.

childNodes

Доступный для чтения объект, подобный массиву (

NodeList
), обеспечивающий «живое» представление дочерних узлов.

firstChild, lastChild

Первый и последний дочерние узлы или null, если данный узел не имеет дочерних узлов.

nextSibling, previousSibling

Следующий и предыдущий братские узлы. Братскими называются два узла, имеющие одного и того же родителя. Порядок их следования соответствует порядку следования в документе. Эти свойства связывают узлы в двусвязный список.

nodeType

Тип данного узла. Узлы типа

Document
имеют значение 9 в этом свойстве. Узлы типа
Element
– значение 1. Текстовые узлы типа
Text
–
значение 3. Узлы типа
Comments
– значение 8 и узлы типа
DocumentFragment
– значение 11.

nodeValue

Текстовое содержимое узлов

Text
и
Comment
.

nodeName

Имя тега элемента

Element
, в котором все символы преобразованы в верхний регистр.

С помощью этих свойств класса

Node
можно сослаться на второй дочерний узел первого дочернего узла объекта
Document
, как показано ниже:

document.childNodes[0].childNodes[1]

document.firstChild.firstChild.nextSibling

Допустим, что рассматриваемый документ имеет следующий вид:

<html><head><title>Test</title></head><body>Hello World!</body></html>

Тогда вторым дочерним узлом первого дочернего узла будет элемент

<body>.
В свойстве
nodeType
он содержит значение 1 и в свойстве
nodeName
– значение «BODY».

Однако, обратите внимание, что этот прикладной интерфейс чрезвычайно чувствителен к изменениям в тексте документа. Например, если в этот документ добавить единственный перевод строки между тегами

<html>
и
<head>,
этот символ перевода строки станет первым дочерним узлом (текстовым узлом
Text
) первого дочернего узла, а вторым дочерним узлом станет элемент
<head>,
а не
<body>
.

15.3.2. Документы как деревья элементов

Когда основной интерес представляют сами элементы документа, а не текст в них (и пробельные символы между ними), гораздо удобнее использовать прикладной интерфейс, позволяющий интерпретировать документ как дерево объектов

Element
, игнорируя узлы
Text
и
Comment
, которые также являются частью документа.

Первой частью этого прикладного интерфейса является свойство

children
объектов
Element
. Подобно свойству
childNodes
, его значением является объект
NodeList
. Однако, в отличие от свойства
childNodes
, список
children
содержит только объекты
Element
. Свойство
children
– нестандартное свойство, но оно реализовано во всех текущих броузерах. В IE это свойство было реализовано уже очень давно, и большинство других броузеров последовали его примеру. Последним основным броузером, реализовавшим его, стал Firefox 3.5.

Поделиться:
Популярные книги

Учебная книга по Русской истории

Соловьев Сергей Михайлович
Проза:
классическая проза
5.00
рейтинг книги
Учебная книга по Русской истории

Эпоха Опустошителя. Том V

Павлов Вел
5. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Эпоха Опустошителя. Том V

Я снова граф. Книга XI

Дрейк Сириус
11. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я снова граф. Книга XI

Гуманитарное знание и вызовы времени

Коллектив авторов
Humanitas
Научно-образовательная:
культурология
5.00
рейтинг книги
Гуманитарное знание и вызовы времени

Adobe InDesign CS3

Завгородний Владимир
Видеосамоучитель
Компьютеры и Интернет:
программное обеспечение
5.00
рейтинг книги
Adobe InDesign CS3

Мы сможем?

Атталь Аврора
Любовные романы:
5.00
рейтинг книги
Мы сможем?

Гоген в Полинезии

Даниельссон Бенгт
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Гоген в Полинезии

Эволюционер из трущоб

Панарин Антон
1. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб

Путешествия Христофора Колумба (Дневники, письма, документы)

Коллектив авторов
Научно-образовательная:
история
5.00
рейтинг книги
Путешествия Христофора Колумба (Дневники, письма, документы)

Путь Шедара

Кораблев Родион
4. Другая сторона
Фантастика:
боевая фантастика
6.83
рейтинг книги
Путь Шедара

3ds Max 2008

Верстак Владимир
Видеосамоучитель
Компьютеры и Интернет:
программное обеспечение
5.00
рейтинг книги
3ds Max 2008

Невеста Дерини

Куртц Кэтрин Ирен
4. Хроники короля Келсона
Фантастика:
фэнтези
7.14
рейтинг книги
Невеста Дерини

Слово (Том 1)

Уоллес Ирвин
5.00
рейтинг книги
Слово (Том 1)

Рассвет русского царства. Книга 2

Грехов Тимофей
2. Новая Русь
Фантастика:
альтернативная история
попаданцы
историческое фэнтези
5.00
рейтинг книги
Рассвет русского царства. Книга 2