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

Самый большой интерес представляет свойство

<b>options[]</b>
элемента
<b>Select</b>
. Это объект, подобный массиву, содержащий элементы
<b>&lt;option&gt;</b>
(см.
<b>Option</b>
), которые описывают варианты выбора, представленные в элементе
<b>Select</b>
. По историческим причинам этот объект, подобный массиву, имеет необычные особенности, касающиеся выполнения операций добавления и удаления элементов
<b>&lt;option&gt;.</b>
Дополнительные сведения приводятся в статье
<b>HTMLOptionsCollection</b>
.

Если в элементе

<b>Select</b>
отсутствует атрибут
<b>multiple</b>
, определить, какой вариант выбран, можно с помощью свойства
<b>selectedlndex</b>
. Однако если допускается возможность одновременного выбора нескольких вариантов, это свойство содержит индекс первого выбранного варианта. Чтобы определить все множество выбранных вариантов, необходимо обойти в цикле массив
<b>options[]</b>
и проверить свойство selected каждого объекта
<b>Option</b>
.

Свойства

В дополнение к свойствам, перечисленным ниже, элементы

<b>Select</b>
также поддерживают свойства интерфейса
<b>Element</b>
и
<b>FormControl</b>
и имеют свойства
<b>multiple, required и size</b>
, соответствующие HTML-атрибутам.

<b>unsigned long length</b>

Количество элементов в коллекции

<b>options</b>
. Объекты
<b>Select</b>
сами являются объектами, подобными массивам, поэтому для объекта s типа
<b>Select</b>
и числа п выражение
s[n]
возвращает то же значение, что и
<b>s.options[n].</b>

<b>readonly HTMLOptionsCollection options</b>

Объект, подобный массиву, с элементами Option, содержащимися в данном элементе

<b>Select</b>
. Описание исторически сложившегося поведения этой коллекции приводится в справочной статье
<b>HTMLOptionsCollection</b>
.

<b>long selectedlndex</b>

Индекс выбранного варианта в массиве

<b>options</b>
. Если ни один из вариантов не выбран, значение этого свойства равно -1. Если выбрано более одного варианта, свойство
<b>selectedlndex</b>
определяет индекс только первого из них.

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

<b>Select</b>
указан атрибут
<b>multiple</b>
. Если выбор реализован в виде списка (когда значение свойства size > 1), то выбор всех вариантов можно отменить, установив свойство selectedlndex равным -1. Обратите внимание: этот способ изменения выбора не приводит к вызову обработчика события
<b>onchange().</b>

<b>readonly HTMLCollection selectedOptions</b>

Доступный только для чтения oбъект, подобный массиву, содержащий выбранные элементы

<b>Option</b>
. Это новое свойство, определяемое спецификацией HTML5, которое на момент написания этих строк было реализовано не во всех броузерах.

Методы

Все методы, перечисленные ниже, делегируют выполнение операций одноименным методам свойства

<b>options</b>
; дополнительные сведения приводятся в справочной статье
<b>HTMLOptionsCollection</b>
. В дополнение к этим методам элементы
<b>Select</b>
реализуют методы интерфейсов
<b>Element</b>
и
<b>FormControl</b>
.

<b>void add(Element element, [any before])</b>

Действует подобно методу

<b>options.add(),</b>
добавляя новый элемент
<b>Option</b>
.

<b>any item(unsigned long index)</b>

Действует подобно методу

<b>options.item()</b>
и возвращает элемент
<b>Option</b>
. Он также неявно вызывается, когда пользователь обращается к элементу
<b>Select</b>
как к массиву.

<b>any namedltem(string name)</b>

Действует подобно методу

<b>options.namedltem()</b>
. См. HTMLOptionsCollection.

<b>void remove(long index)</b>

Действует подобно методу

<b>options.remove(),</b>
удаляя элемент
<b>Option</b>
. См. HTMLOptionsCollection.

Storage

хранилище пар имя/значение на стороне клиента

Свойства

<b>localStorage</b>
и
<b>sessionStorage</b>
объекта
<b>Window</b>
являются объектами
<b>Storage</b>
, которые представляют хранимые на стороне клиента ассоциативные массивы, отображающие строковые ключи в значения. Теоретически объект
<b>Storage</b>
может хранить любые значения, которые можно копировать с применением алгоритма структурированного копирования (врезка «Структурированные копии» в главе 22). Однако на момент написания данных строк броузеры позволяли сохранять только строковые значения.

Методы объекта

<b>Storage</b>
позволяют добавлять новые пары ключ/значение, удалять их и получать значение, связанное с определенным ключом. Однако нет необходимости явно вызывать эти методы: вместо них можно использовать операцию индексирования и оператор
<b>delete</b>
и обрабатывать свойства
<b>localStorage</b>
и
<b>sessionStorage</b>
, как если бы они были обычными объектами.