// каждого элемента формы есть атрибут name, который должен быть установлен в HTML_теге, если форма предназначена для отправки серверной программе. Хотя отправка данных формы, как правило, не представляет интереса для Java_ Script_программ, вы скоро увидите, что есть еще одна причина указывать значе_ ние этого атрибута.
// тега <form> также есть атрибут name, который можно установить. Этот атрибут не имеет никакого отношения к отправке форм. Как уже говорилось в главе 15, он придуман для удобства JavaScript_программистов. Если в теге <form> опреде_ лен атрибут name, то объект Form, создаваемый для данной формы, как обычно, сохраняется как элемент массива forms[] объекта Document, а также в собствен_ ном персональном свойстве объекта Document. Имя этого нового свойства и пред_ ставляет собой значение атрибута name. В частности, в примере 18.1 мы опреде_ лили форму с помощью следующего тега:
<form name="everything">
Это позволило нам ссылаться на объект Form так:
document.everything
Часто это удобнее, чем нотация массива:
document.forms[0]
Кроме того, использование имени формы делает код позиционно независимым: он останется работоспособным, даже если документ будет реорганизован так, что формы расположатся в нем в ином порядке.
У HTML_тегов <img> и <applet> есть еще атрибут name, действующий так же, как атрибут name тега <form>. Однако в формах именование идет дальше, т. к. у всех элементов формы тоже есть собственный атрибут name. Когда вы даете имя эле_ менту формы, вы создаете новое свойство объекта Form, ссылающееся на этот эле_ мент. Именем этого свойства становится значение атрибута. Следовательно, вы можете следующим образом сослаться на элемент с именем «zipcode», находя_ щийся на форме с именем «address»:
document.address.zipcode
Разумно выбрав имена, можно сделать синтаксис более элегантным, чем альтер_ нативный синтаксис, в котором индексы массивов жестко «зашиты» в исходные тексты программы (и зависят от позиции):
document.forms[1].elements[4]
Чтобы в группе переключателей мог быть установлен только один, всем входя_ щим в группу элементам должны быть даны одинаковые имена. В примере 18.1 мы определили три переключателя, для которых значения атрибута name одина_ ковы – browser. Общепринятой, хотя и не обязательной, практикой также явля_ ется назначение одинаковых атрибутов name группе взаимосвязанных флажков. Когда несколько элементов формы имеют одинаковые значения атрибута name, интерпретатор JavaScript просто помещает эти элементы в массив с указанным именем. Элементы массива располагаются в том порядке, в котором они присут_
18.3. Сценарии и элементы формы
ствуют в документе. Поэтому на объекты Radio (переключатель) из примера 18.1 можно ссылаться так: