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

<b>window.address // Ненадежный: старайтесь не использовать</b>

<b>document.address // Может применяться только к формам с атрибутом name</b>

<b>document.forms.address // Явное обращение к форме с атрибутом name или id </b>

<b>document.forms[n] // Ненадежный: n - порядковый номер формы</b>

В разделе 15.2.3 говорилось, что свойство

<b>document.forms</b>
ссылается на объект
<b>HTMLCollection</b>
, позволяющий выбирать элементы
<b>&lt;form&gt;</b>
по их порядковым номерам, по значению атрибута
<b>id</b>
или
<b>name</b>
. Объекты
<b>Form</b>
сами по себе действуют подобно объектам
<b>HTMLCollection</b>
, хранящим элементы форм, и могут индексироваться именами или числами. Если первый элемент формы с атрибутом
<b>name=&quot;address&quot;</b>
имеет атрибут
<b>name=&quot;street”</b>
, на него можно сослаться с помощью любого из следующих выражений:

<b>document.forms.address[0] </b>

<b>document.forms.address.street</b>

<b>document.address.street // только для name=&quot;address&quot;, но не id=”address”</b>

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

<b>elements</b>
:

<b>document.forms.address.elements[0] </b>

<b>document.forms.address.elements.street</b>

Для выбора конкретных элементов документа предпочтительнее использовать атрибут

<b>id</b>
. Однако при отправке форм атрибут
<b>name</b>
играет особую роль и чаще используется с самими формами, чем с элементами форм. Обычно при работе с группами флажков и обязательно при работе с группами радиокнопок для атрибута
<b>name</b>
используется одно и то же значение. Напомню, что, когда объект
<b>HTMLCollection</b>
индексируется именем и существует сразу несколько элементов, использующих одно и то же имя, возвращаемым значением является объект, подобный массиву, содержащий все элементы с указанным именем. Взгляните на следующую форму, содержащую радиокнопки для выбора метода доставки товара:

<b>&lt;form name=&quot;shipping&quot;&gt;</b>

<b>  &lt;fieldset&gt;</b>

<b>    &lt;legend&gt;Shipping Method&lt;/legend&gt;</b>

<b>    &lt;label&gt;</b>

<b>      &lt;input type=&quot;radio&quot; name=&quot;method&quot; value=&quot;1st&quot;&gt;</b>

<b>      первым классом</b>

<b>    &lt;/1аbеl&gt;</b>

<b>    &lt;label&gt;</b>

<b>      &lt;input type=”radio&quot; name=&quot;method&quot; value=&quot;2day&quot;&gt;</b>

<b>      3a 2 дня самолетом</b>

<b>    &lt;/label&gt;</b>

<b>    &lt;label&gt;</b>

<b>      &lt;input type=&quot;radio&quot; name=&quot;method&quot; value=”overnite&quot;&gt;</b>

<b>      В течение ночи</b>

<b>    &lt;/label&gt;</b>

<b>  &lt;/fieldset&gt;</b>

<b>&lt;/form&gt;</b>

Сослаться на массив радиокнопок в этой форме можно следующим образом:

<b>var methods = document.forms.shipping.elements.method;</b>

Обратите внимание, что элементы

<b>&lt;form&gt;</b>
имеют HTML-атрибут и соответствующее ему свойство с именем «method», поэтому в данном случае необходимо использовать свойство
<b>elements</b>
формы вместо прямого обращения к свойству
<b>method</b>
. Чтобы определить, какой метод доставки выбрал пользователь, необходимо обойти элементы формы в массиве и проверить свойство
<b>checked</b>
каждого из них:

<b>var shippingjnethod;</b>

<b>for(var і = 0; і &lt; methods.length; і++)</b>

<b>  if (methods[і].checked) shipping_method = methods[i].value;</b>

Со свойствами элементов форм, такими как

<b>checked</b>
и
<b>value</b>
, мы поближе познакомимся в следующем разделе.

15.9.2. Свойства форм и их элементов

Наиболее интересным для нас свойством объекта

<b>Form</b>
является массив
<b>elements[],</b>
описанный выше. Остальные свойства объекта
<b>Form</b>
менее важны. Свойства
<b>action</b>
,
<b>encoding, method</b>
и
<b>target</b>
непосредственно соответствуют атрибутам
<b>action, encoding, method</b>
и
<b>target</b>
элемента
<b>&lt;form&gt;.</b>
Все эти свойства и атрибуты используются для управления отправкой данных формы на веб-сервер и отображением результатов. Клиентский сценарий на языке JavaScript может устанавливать значения этих свойств, но это имеет смысл, только когда форма действительно отправляется серверной программе.