Книга: JavaScript. Подробное руководство, 6-е издание
15.2.2. Выбор элементов по значению атрибута name
15.2.2. Выбор элементов по значению атрибута name
HTML-атрибут name
первоначально предназначался для присваивания имен элементам форм, и значение этого атрибута использовалось, когда выполнялась отправка данных формы на сервер. Подобно атрибуту id
, атрибут name присваивает имя элементу. Однако, в отличие от id
, значение атрибута name
не обязано быть уникальным: одно и то же имя могут иметь сразу несколько элементов, что вполне обычно при использовании в формах радиокнопок и флажков. Кроме того, в отличие от id
, атрибут name
допускается указывать лишь в некоторых HTML-элементах, включая формы, элементы форм и элементы <iframe>
и <img>
.
Выбрать HTML-элементы, опираясь на значения их атрибутов name
, можно с помощью метода getElementsByName()
объекта Document
:
var radiobuttons = document.getElementsByName("favorite_color");
Метод getElementsByName()
определяется не классом Document
, а классом HTMLDocument
, поэтому он доступен только в HTML-документах и не доступен в XML-документах. Он возвращает объект NodeList
, который ведет себя, как доступный только для чтения массив объектов Element
. В IE метод getElementsByName()
возвращает также элементы, значения атрибутов id
которых совпадает с указанным значением. Чтобы обеспечить совместимость с разными версиями броузеров, необходимо внимательно подходить к выбору значений атрибутов и не использовать одни и те же строки в качестве значений атрибутов name
и id
.
Мы видели в разделе 14.7, что наличие атрибута name
в некоторых HTML-элементах приводит к автоматическому созданию свойств с этими именами в объекте Window
. То же относится и к объекту Document
. Наличие атрибута name в элементе <form>,<img>, <if rame>, <applet>, <embed>
или <object>
(но только в элементе <object>,
который не имеет вложенных объектов с альтернативным содержимым) приводит к созданию свойства в объекте Document
, имя которого совпадает со значением атрибута (при этом предполагается, что объект документа еще не имеет свойства с этим именем).
Если существует только один элемент с указанным именем, значением автоматически созданного свойства документа станет сам элемент. Если таких элементов несколько, значением свойства будет объектNodeList
, играющий роль массива элементов. Как было показано в разделе 14.7, для именованных элементов <iframe>
создаются особые свойства документа: они ссылаются не на объекты Element
, а на объекты Window
, представляющие фреймы.
Это означает, что некоторые элементы могут быть выбраны по их именам простым обращением к свойствам объекта Document
:
// Получить ссылку на объект Element для элемента <form name="shipping_address">
var form = document.shipping_address;
Причины, почему не следует использовать автоматически создаваемые свойства окна, которые описываются в разделе 14.7, в равной степени применимы и к автоматически создаваемым свойствам документа. Если вам потребуется отыскать именованные элементы, лучше всего это сделать явно, с помощью метода getElementsByName()
.
- 15.2. Выбор элементов документа
- 15.2.1. Выбор элементов по значению атрибута id
- 15.2.4. Выбор элементов по классу CSS
- 15.2.5. Выбор элементов с использованием селекторов CSS
- Выбор стратегии ценообразования
- Выбор аппаратного обеспечения для InterBase
- Рекомендации по выбору архитектуры: Classic или SuperServer?
- Создание свободно позиционируемых элементов
- Ограничение результатов выборки FIRST
- Выбор спутника жизни
- 1. Унарная операция выборки
- 1. Операция выборки.