J'ai un tableau déclaré dans un script:
var myArray = new Array("1", "2", "3", "4", "5" . . . . . "N");
J'ai un formulaire qui contient un menu déroulant:
<form id="myForm">
<select id="selectNumber">
<option>Choose a number</option>
</select>
</form>
En utilisant Javascript, comment vais-je remplir le reste du menu déroulant avec les valeurs du tableau? Pour que les options soient "Choisissez un numéro", "1", "2", "3", "4", "5". . . . . "N"?
Vous aurez besoin de parcourir vos éléments de tableau, de créer un nouveau nœud DOM pour chacun et de les ajouter à votre objet.
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);
}
Vous pouvez aussi le faire avec jQuery:
var options = ["1", "2", "3", "4", "5"];
$('#select').empty();
$.each(options, function(i, p) {
$('#select').append($('<option></option>').val(p).html(p));
});
Quelque chose comme ça devrait marcher:
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);
}
Vous pouvez vous référer à cet article pour plus de détails:
http://www.plus2net.com/javascript_tutorial/list-adding.php
Vous obtiendrez d’abord l’élément de liste déroulante à partir du DOM, puis vous parcourerez le tableau et ajouterez chaque élément en tant que nouvelle option dans la liste déroulante, comme suit:
// 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]);
}
Voir JSFiddle pour une démonstration en direct: http://jsfiddle.net/nExgJ/
Cela suppose que vous n'utilisez pas JQuery et que vous ne disposez que de l'API DOM de base.
J'avais les mêmes exigences, j'ai utilisé la solution "Alex Turpin" avec les petites corrections mentionnées ci-dessous.
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);
}
Corrections car avec la fonction appendChild () est chargé lors de la préparation du DOM. Donc, cela ne fonctionne pas dans les anciennes versions (<8> ou moins) IE. Donc, avec les corrections, ça fonctionne bien.
Merci Alex pour votre solution.
Quelques notes sur differences n/b add () et appendChild ()
J'ai trouvé que ça marche aussi ...
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>";
}
["1","2","3","4"].forEach( function(item) {
var o = document.createElement("option");
o.textContext = item;
document.getElementById("myselect").appendChild(o);
});
<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>