Обычно Вы работаете с объектами Option в контексте списка выбора/selection list (объект Select).
Когда JavaScript создаёт Select-объект
для каждого тэга SELECT в документе, он создаёт Option-объекты
для тэгов OPTION внутри тэга SELECT и помещает эти
объекты в массив options объекта Select.
Кроме того, Вы можете создавать новые опции, используя конструктор Option,
и добавлять эти опции в список выбора. После создания опции и добавления её в Select-объект,
Вы обязаны обновить документ, используя history.go(0). Этот
оператор обязан быть последним. При перезагрузке документа переменные теряются,
если они не сохранены в куках или значениях элементов формы.
Свойство Select.selectedIndex
это целое число, специфицирующее индекс выбранной опции. Оно чаще всего
используется в Select-объектах, которые созданы без атрибута MULTIPLE.
Следующий оператор устанавливает свойство selectedIndex
объекта Select:
document.myForm.musicTypes.selectedIndex = i
Свойство Option.selected это Булево
значение, специфицирующее текущий статус выбора опции Select-объекта.
Если опция выбрана, её свойство selected имеет значение true;
иначе - false. Это чаще всего используется в Select-объектах,
созданных с атрибутом MULTIPLE. Следующий оператор устанавливает свойство selected опции в true:
Вам не нужно перезагружать или обновлять документ после изменения текста опции.
Пример
Создаётся два Select-объекта, один с и другой без атрибута MULTIPLE.
Никакие опции этих объектов первоначально не определены. Когда пользователь
щёлкает кнопку, ассоциированную с Select-объектом, функция populate
создаёт 4 опции для Select-объекта и выбирает первую опцию.
<SCRIPT> function populate(inForm) { colorArray = new Array("Red", "Blue", "Yellow", "Green")
var option0 = new Option("Red", "color_red") var option1 = new Option("Blue", "color_blue") var option2 = new Option("Yellow", "color_yellow") var option3 = new Option("Green", "color_green")
for (var i=0; i < 4; i++) { eval("inForm.selectTest.options[i]=option" + i) if (i==0) { inForm.selectTest.options[i].selected=true } }
Если опция выбрана по умолчанию, значение свойства defaultSelected равно true; иначе - false. defaultSelected первоначально отражает использование атрибута SELECTED
в тэге OPTION; однако установка defaultSelected переопределяет атрибут SELECTED.
Вы можете установить свойство defaultSelected в любое время.
Отображение соответствующего Select-объекта
не обновляется, когда Вы устанавливаете свойство defaultSelected
опции, оно обновляется только при установке свойств Option.selected
или Select.selectedIndex.
Объект Select, созданный без
атрибута MULTIPLE, может иметь выбранной по умолчанию только одну
опцию. Если Вы устанавливаете defaultSelected в таком объекте,
любые предыдущие установки по умолчанию, включая установки атрибутом SELECTED,
очищаются. Если Вы устанавливаете defaultSelected в Select-объекте,
созданном с атрибутом MULTIPLE, предыдущие установки выбора не изменяются.
Пример
Здесь функция restoreDefault возвращает объект musicTypeSelect
в состояние по умолчанию. Цикл for использует массив options
для вычисления каждой опции Select-объекта. Оператор if
устанавливает свойство selected, если defaultSelected имеет значение true.
function restoreDefault() { for (var i = 0; i < document.musicForm.musicType.length; i++) { if (document.musicForm.musicType.options[i].defaultSelected == true) { document.musicForm.musicType.options[i].selected=true } } }
В предыдущем примере предполагается, что Select-объект
определён примерно так:
<SELECT NAME="musicType"> <OPTION SELECTED> R&B <OPTION> Jazz <OPTION> Blues <OPTION> New Age </SELECT>
Свойство index специфицирует позицию элемента в массиве Select.options, начиная с 0.
Пример
Здесь функция getChoice возвращает значение свойства index
выбранной опции. Цикл for вычисляет каждую опцию Select-объекта musicType.
Оператор if находит выбранную опцию.
function getChoice() { for (var i = 0; i < document.musicForm.musicType.length; i++) { if (document.musicForm.musicType.options[i].selected == true) { return document.musicForm.musicType.options[i].index } } return null }
Предполагается, что Select-объект таков:
<SELECT NAME="musicType"> <OPTION SELECTED> R&B <OPTION> Jazz <OPTION> Blues <OPTION> New Age </SELECT>
Обратите внимание, что можно также определить индекс выбранной опции этого
примера путём использования document.musicForm.musicType.selectedIndex.
Если опция Select-объекта выбрана,
значение свойства selected опции равно true; иначе - false. Вы
можете установить свойство selected в любое время. Вид
ассоциированного Select-объекта
обновляется сразу после установки свойства selected для одной из его опций.
Вообще, свойство Option.selected
используется чаще, чем свойство Select.selectedIndex,
в Select-объектах, созданных с
атрибутом MULTIPLE. С помощью свойства Option.selected
Вы можете вычислять каждую опцию массива Select.options
для определения множественного выбора, а также можете выбирать отдельные опции без изменения статуса выбора других опций.
JavaScript 1.1: свойство text может быть изменено для обновления
опции выбора. В предыдущих релизах Вы могли установить свойство text,
но новое значение не отражалось в Select-объекте.
Свойство text первоначально содержит текст, который идёт после тэга OPTION
в тэге SELECT. Вы можете установить свойство text в
любое время, и текст, отображаемый опцией в списке выбора, изменится.
Примеры
Пример 1. Здесь функция getChoice возвращает значение
свойства text для выбраной опции. Цикл for вычисляет
каждую опцию Select-объекта musicType. Оператор if находит выбранную опцию.
function getChoice() { for (var i = 0; i < document.musicForm.musicType.length; i++) { if (document.musicForm.musicType.options[i].selected == true) { return document.musicForm.musicType.options[i].text } } return null }
Предполагается, что Select-объект таков:
<SELECT NAME="musicType"> <OPTION SELECTED> R&B <OPTION> Jazz <OPTION> Blues <OPTION> New Age </SELECT>
Пример 2. В следующей форме пользователь может ввести некоторый текст в
первом текстовом поле, а затем ввести число от 0 до 2 (включительно) во втором
текстовом поле. Когда пользователь щёлкает по кнопке, текст изменяется на номер выбранной опции, и эта опция выбирается.
Код выглядит так:
<SCRIPT> function updateList(theForm, i) { theForm.userChoice.options[i].text = theForm.whatsNew.value theForm.userChoice.options[i].selected = true } </SCRIPT> <FORM> <SELECT name="userChoice"> <OPTION>Choice 1 <OPTION>Choice 2 <OPTION>Choice 3 </SELECT> <BR> New text for the option: <INPUT TYPE="text" NAME="whatsNew"> <BR> Option to change (0, 1, or 2): <INPUT TYPE="text" NAME="idx"> <BR> <INPUT TYPE="button" VALUE="Change Selection" onClick="updateList(this.form, this.form.idx.value)"> </FORM>
Если атрибут VALUE специфицируется в HTML, то свойство value
это строка, отражающая его. Если атрибут VALUE не специфицируется в HTML,
то свойство value это пустая строка. Свойство value не
отображается на экране, а возвращается на сервер, если опция выбрана.
Не путайте это свойство со статусом выбора опции или текста, который
отображается вслед за ней. Свойство selected
определяет статус выбора объекта, а свойство defaultSelected
определяет статус выбора по умолчанию. Отображаемый текст специфицируется после
тэга OPTION и соответствует свойству text.