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

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

Жанры

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
можно обойти с помощью стандартного цикла, например:

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

По осколкам твоего сердца

Джейн Анна
2. Хулиган и новенькая
Любовные романы:
современные любовные романы
5.56
рейтинг книги
По осколкам твоего сердца

Черный Маг Императора 16

Герда Александр
16. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 16

Неучтенный элемент. Том 5

NikL
5. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 5

Самые знаменитые произведения писателя в одном томе

Брэдбери Рэй Дуглас
Фантастика:
фантастика: прочее
4.00
рейтинг книги
Самые знаменитые произведения писателя в одном томе

Газлайтер. Том 14

Володин Григорий Григорьевич
14. История Телепата
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 14

Моров. Том 5

Кощеев Владимир
4. Моров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Моров. Том 5

Гримуар темного лорда IV

Грехов Тимофей
4. Гримуар темного лорда
Фантастика:
фэнтези
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Гримуар темного лорда IV

Камень. Книга 3

Минин Станислав
3. Камень
Фантастика:
фэнтези
боевая фантастика
8.58
рейтинг книги
Камень. Книга 3

Чужое наследие

Кораблев Родион
3. Другая сторона
Фантастика:
боевая фантастика
8.47
рейтинг книги
Чужое наследие

Путь

Yagger Егор
Фантастика:
космическая фантастика
4.25
рейтинг книги
Путь

Кодекс Охотника. Книга XXI

Винокуров Юрий
21. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XXI

Печать Пожирателя 3

Соломенный Илья
3. Пожиратель
Фантастика:
городское фэнтези
аниме
сказочная фантастика
фэнтези
попаданцы
5.00
рейтинг книги
Печать Пожирателя 3

Черный Маг Императора 23

Герда Александр
23. Черный маг императора
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Черный Маг Императора 23

Третий. Том 4

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий. Том 4