2013-12-16 2 views
2

У меня есть этот кусок кода:Как изменить выберите опцию Javascript

<select name="commentselected" id="commentselected"> 
<option value="0">Text for Value 0</option> 
<option value="1">Text for Value 1</option> 
<option value="2">Text for Value 2</option> 
</select> 

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

document.getElementsByName('commentselected').selectedIndex[2]; 

, но он не работает. Есть идеи?

ответ

1

getElementsByName возвращает массив элементов an HTMLCollection, который необходимо проиндексировать.

Кроме того, SelectedIndex является свойство, которое должно быть установить

document.getElementsByName('commentselected')[0].selectedIndex = 2; 

Вот simple demo


Кроме того, поскольку ваш выбор уже имеет идентификатор, вы могли бы также использование getElementById, like this

+0

['getElementsByName'] (http: // www .w3.org/TR/DOM-Level-2-HTML/html.html # ID-71555259) возвращает [HTMLCollection] (http://www.w3.org/TR/DOM-Level-2-HTML/html .html # ID-75708506), а не массив. Единственное сходство, которое он имеет с массивом, - это возможность выбирать элементы по индексу. – RobG

+0

Спасибо @Adam Rackis – maniootek

0

A s Adam сказал, вам нужно установить свойство и getElement * s * - note множественное число - возвращает массив, даже если этот массив содержит только 1 элемент. Итак, если у вас было более одного элемента с именем «commentselected», чтобы перейти к вашему выбору, вам пришлось бы перебирать массив и искать «type = select» ... не очень эффективный бит кода

Если вам нужно получить доступ к 1 элементу, вы используете getElementById ... поэтому свойство ID уникально, чтобы убедиться, что есть только один элемент с этим идентификатором.

+0

'getElementsByName' всегда возвращает коллекцию HTML, даже если нет совпадений , – RobG

Смежные вопросы