JavaScript - заполнить выпадающий список с помощью массива
У меня есть массив, объявленный в script:
var myArray = new Array("1", "2", "3", "4", "5" . . . . . "N");
У меня есть форма, которая содержит выпадающее меню:
<form id="myForm">
<select id="selectNumber">
<option>Choose a number</option>
</select>
</form>
Используя Javascript, как я буду заполнять остальную часть выпадающего меню значениями массива? Таким образом, варианты будут: "Выбрать число", "1", "2", "3", "4", "5".,, "N"?
Ответы
Ответ 1
Вам нужно будет пропустить элементы массива, создать новый DOM node для каждого и добавить его к вашему объекту.
var select = document.getElementById("selectNumber");
var options = ["1", "2", "3", "4", "5"];
for(var i = 0; i < options.length; i++) {
var opt = options[i];
var el = document.createElement("option");
el.textContent = opt;
el.value = opt;
select.appendChild(el);
}
Живой пример
Ответ 2
Вы также можете сделать это с помощью jQuery:
var options = ["1", "2", "3", "4", "5"];
$('#select').empty();
$.each(options, function(i, p) {
$('#select').append($('<option></option>').val(p).html(p));
});
Ответ 3
Что-то вроде этого должно работать:
var dropdown = document.getElementById("dropdown1");
if (dropdown) {
for (var i=0; i < month.length;++i){
addOption(dropdown, month[i], month[i]);
}
}
addOption = function(selectbox, text, value) {
var optn = document.createElement("OPTION");
optn.text = text;
optn.value = value;
selectbox.options.add(optn);
}
Вы можете обратиться к этой статье за дополнительной информацией:
http://www.plus2net.com/javascript_tutorial/list-adding.php
Ответ 4
Сначала вы выберете выпадающий элемент из DOM, затем выполните цикл через массив и добавьте каждый элемент в качестве новой опции в раскрывающемся списке, например:
// Get dropdown element from DOM
var dropdown = document.getElementById("selectNumber");
// Loop through the array
for (var i = 0; i < myArray.length; ++i) {
// Append the element to the end of Array list
dropdown[dropdown.length] = new Option(myArray[i], myArray[i]);
}
Смотрите JSFiddle для живой демонстрации: http://jsfiddle.net/nExgJ/
Это предполагает, что вы не используете JQuery, и у вас есть только базовый DOM API для работы.
Ответ 5
Я нашел, что это также работает...
var select = document.getElementById("selectNumber");
var options = ["1", "2", "3", "4", "5"];
// Optional: Clear all existing options first:
select.innerHTML = "";
// Populate list with options:
for(var i = 0; i < options.length; i++) {
var opt = options[i];
select.innerHTML += "<option value=\"" + opt + "\">" + opt + "</option>";
}
Ответ 6
["1","2","3","4"].forEach( function(item) {
var o = document.createElement("option");
o.textContext = item;
document.getElementById("myselect").appendChild(o);
});
Ответ 7
<form id="myForm">
<select id="selectNumber">
<option>Choose a number</option>
<script>
var myArray = new Array("1", "2", "3", "4", "5" . . . . . "N");
for(i=0; i<myArray.length; i++) {
document.write('<option value="' + myArray[i] +'">' + myArray[i] + '</option>');
}
</script>
</select>
</form>
Ответ 8
У меня было такое же требование, я использовал решение "Alex Turpin" с небольшими исправлениями, как указано ниже.
var select = document.getElementById("selectNumber");
var options = ["1", "2", "3", "4", "5"];
for(var i = 0; i < options.length; i++) {
var opt = options[i];
var el = document.createElement("option");
el.text = opt;
el.value = opt;
select.add(el);
}
Исправления, поскольку с помощью функции appendChild() загружается, когда DOM готовится. Поэтому он не работает в старых (8 или менее) версиях IE. Так что с исправлениями он работает нормально.
Спасибо Alex за ваше решение.
Некоторые заметки о различиях b/w add() и appendChild()