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

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

Жанры

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

Если существует только один элемент с указанным именем, значением автоматически созданного свойства документа станет сам элемент. Если таких элементов несколько, значением свойства будет объект

NodeList
, играющий роль массива элементов. Как было показано в разделе 14.7, для именованных элементов
<iframe>
создаются особые свойства документа: они ссылаются не на объекты
Element
, а на объекты
Window
, представляющие фреймы.

Это означает, что некоторые элементы могут быть выбраны по их именам простым обращением к свойствам объекта

Document
:

// Получить ссылку на объект Element для элемента <form name="shipping_address">

var form = document.shipping_address;

Причины, почему не следует использовать автоматически создаваемые свойства окна, которые описываются в разделе 14.7, в равной степени применимы и к автоматически создаваемым свойствам документа. Если вам потребуется отыскать именованные элементы, лучше всего это сделать явно, с помощью метода

getElementsByName
.

15.2.3. Выбор элементов по типу

Метод

getElementsByTagName
объекта
Document
позволяет выбрать все HTML- или XML-элементы указанного типа (или по имени тега). Например, получить подобный массиву объект, доступный только для чтения, содержащий объекты
Element
всех элементов
<span>
в документе, можно следующим образом:

var spans = document.getElementsByTagName("span");

Подобно методу

getElementsByName
,
getElementsByTagName
возвращает объект
NodeList
. (Подробнее класс
NodeList
описывается во врезке, в этом же разделе.) Элементы документа включаются в массив
NodeList
в том же порядке, в каком они следуют в документе, т. е. первый элемент
<р>
в документе можно выбрать так:

var firstpara = document.getElementsByTagName("p")[0];

Имена HTML-тегов не чувствительны к регистру символов, и когда

getElementsByTagName
применяется к HTML-документу, он выполняет сравнение с именем тега без учета регистра символов. Переменная
spans
, созданная выше, например, будет включать также все элементы
<span>
, которые записаны как
<SPAN>.

Можно получить

NodeList
, содержащий все элементы документа, если передать методу
getElementsByTagName
шаблонный символ «*».

Кроме того, классом

Element
также определяет метод
getElementsByTagName.
Он действует точно так же, как и версия метода в классе
Document
, но выбирает только элементы, являющиеся потомками для элемента, относительно которого вызывается метод. То есть отыскать все элементы
<span>
внутри первого элемента
<р>
можно следующим образом:

var firstpara = document.getElementsByTagName("p")[0];

var firstParaSpans = firstpara.getElementsByTagName("span");

По историческим причинам класс

HTMLDocument
определяет специальные свойства для доступа к узлам определенных типов. Свойства
images
,
forms
и
links
, например, ссылаются на объекты, которые ведут себя как массивы, доступные только для чтения, содержащие элементы
<img>, <form>
и
<а>
(но только те теги
<а>,
которые имеют атрибут
href
). Эти свойства ссылаются на объекты
HTMLCollection
, которые во многом похожи на объекты
NodeList
, но дополнительно могут индексироваться значениями атрибутов
id
и
name
. Ранее мы узнали, как можно получить ссылку на именованный элемент
<form>
с помощью такого выражения:

document.shipping_address

С помощью свойства

document.forms
обращение к форме, имеющей атрибут
name
(или
id
), можно записать более явно:

document.fоrms.shipping_address;

Объект

HTMLDocument
также определяет свойства-синонимы
embeds
и
plugins
, являющиеся коллекциями
HTMLCollection
элементов
<embed>.
Свойство
anchors
является нестандартным, но с его помощью можно получить доступ к элементам
<а>,
имеющим атрибут
name
, но не имеющим атрибут
href
. Свойство
scripts
определено стандартом HTML5 и является коллекцией
HTMLCollection
элементов
<script>,
но к моменту написания этих строк оно было реализовано не во всех броузерах.

Кроме того, объект

HTMLDocument
определяет два свойства, каждое из которых ссылается не на коллекцию, а на единственный элемент. Свойство
document.body
представляет элемент
<body>
HTML-документа, а свойство
document.head
элемент
<head>.
Эти свойства всегда определены в документе: даже если в исходном документе отсутствуют элементы
<head>
и
<body>,
броузер создаст их неявно. Свойство
document.Element
объекта
Document
ссылается на корневой элемент документа. В HTML-документах он всегда представляет элемент
<html>
.

Объекты NodeList и HTMLCollection

Методы

getElementsByName
и
getElementsByTagName
возвращают объекты
NodeList
, а такие свойства, как
document.images
и
document.forms
, являются объектами
HTMLCollection
.

Эти объекты являются объектами, подобными массивам, доступным только для чтения (раздел 7.11). Они имеют свойство

length
и могут индексироваться (только для чтения) подобно настоящим массивам. Содержимое объекта
NodeList
или
HTMLCollection
можно обойти с помощью стандартного цикла, например:

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

Старый, но крепкий 7

Крынов Макс
7. Культивация без насилия
Фантастика:
рпг
уся
фэнтези
5.00
рейтинг книги
Старый, но крепкий 7

Полет аистов

Гранже Жан-Кристоф
Детективы:
триллеры
8.88
рейтинг книги
Полет аистов

Рядовой. Назад в СССР. Книга 1

Гаусс Максим
1. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Рядовой. Назад в СССР. Книга 1

Наследие Маозари 8

Панежин Евгений
8. Наследие Маозари
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
постапокалипсис
рпг
фэнтези
эпическая фантастика
5.00
рейтинг книги
Наследие Маозари 8

Граф

Первухин Андрей Евгеньевич
8. Ученик
Фантастика:
фэнтези
попаданцы
5.25
рейтинг книги
Граф

Глава рода

Шелег Дмитрий Витальевич
5. Живой лёд
Фантастика:
боевая фантастика
6.55
рейтинг книги
Глава рода

Я все еще барон

Дрейк Сириус
4. Дорогой барон!
Фантастика:
боевая фантастика
5.00
рейтинг книги
Я все еще барон

Второгодка. Книга 4. Подавать холодным

Ромов Дмитрий
4. Второгодка
Фантастика:
героическая фантастика
альтернативная история
сказочная фантастика
5.00
рейтинг книги
Второгодка. Книга 4. Подавать холодным

Абордажник

Султанов Дмитрий Игоревич
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
8.05
рейтинг книги
Абордажник

Барон нарушает правила

Ренгач Евгений
3. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон нарушает правила

Последний Паладин. Том 4

Саваровский Роман
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 4

Оружейникъ

Кулаков Алексей Иванович
2. Александр Агренев
Фантастика:
альтернативная история
9.17
рейтинг книги
Оружейникъ

Секретная история вампиров

Тертлдав Гарри Норман
Фантастика:
ужасы и мистика
альтернативная история
5.00
рейтинг книги
Секретная история вампиров

Аспирант

Поселягин Владимир Геннадьевич
3. Рунный маг
Фантастика:
боевая фантастика
4.50
рейтинг книги
Аспирант