Javascript, select и innerhtml - динамически изменяем элементы option в select
Задача:
Используя javascript динамически формировать options у html элемента select.
Вариант решения с использованием свойства innerHTML:
html:
<select id="select1"><option value="val1">text1</option></select>
javascript:
myselect = document.getElementById('select1');
select1.innerHTML = '<option value="val2">text2</option><option value="val3">text3</option>';
Такое решение не везде работает (mozilla firefox этот код обрабатывает. Opera и IE отказались напрочь)
http://support.microsoft.com/kb/276228 - с официального сайта Microsoft про innerHTML у Select. Там же варианты “обхода” этого бага.
Вариант 1 - использование js массива .options[] у элемента select:
select1.options[i] = new Option(i,i);
Вариант 2 - замена innerHTML у родительского элемента (т.е. HTML должен включать сам тэг select):
<div id="out1"><select ..> </select></div>
js: document.getElementById ('out1').innerHTML = '<select id="select1" name="select1"><option ...>...</option></select>';
ps. Все-таки наткнулся на решение на одном из лучших (на мой взгляд) ресурсов по web:
Javascript SELECT - динамические списки
UPD2 Вариант получения данных для формирования элемента select через ajax: Для передачи в JavaScript пар ID:значение используем responseText в формате JSON, значение которого вычисляем при помощи функции eval.
data = eval (transport.responseText);
for (i=0; i< =data.length-1; i++)
myElement.options[i]=new Option(data[i][1],data[i][0])
При этом скрипт должен отдавать массив в виде:
[
['1','название первого элемента'],
['2','название второго элемента'],
]
Метки: javascript, js
а как насчет списка из числовых значений? чтобы можно было выбрать, например, два числа и сложить? Сложить именно как числа, а не строки)
Складывайте..
String.toInt()