Vous pouvez y parvenir avec un simple for
boucle :
var min = 12,
max = 100,
select = document.getElementById('selectElementId');
for (var i = min; i<=max; i++){
var opt = document.createElement('option');
opt.value = i;
opt.innerHTML = i;
select.appendChild(opt);
}
Démonstration de JS Fiddle .
JS Perf comparaison de la mine et du Réponse de Sime Vidas Je l'ai exécuté parce que je trouvais que le sien semblait un peu plus compréhensible/intuitif que le mien et je me demandais comment cela se traduirait dans la mise en œuvre. Selon Chromium 14/Ubuntu 11.04, le mien est un peu plus rapide, mais d'autres navigateurs/plateformes sont susceptibles d'avoir des résultats différents.
Modifié en réponse au commentaire du PO :
[Comment puis-je l'appliquer à plus d'un élément ?
function populateSelect(target, min, max){
if (!target){
return false;
}
else {
var min = min || 0,
max = max || min + 100;
select = document.getElementById(target);
for (var i = min; i<=max; i++){
var opt = document.createElement('option');
opt.value = i;
opt.innerHTML = i;
select.appendChild(opt);
}
}
}
// calling the function with all three values:
populateSelect('selectElementId',12,100);
// calling the function with only the 'id' ('min' and 'max' are set to defaults):
populateSelect('anotherSelect');
// calling the function with the 'id' and the 'min' (the 'max' is set to default):
populateSelect('moreSelects', 50);
Démonstration de JS Fiddle .
Et, enfin (après tout un retard...), une approche étendant le prototype du HTMLSelectElement
afin d'enchaîner les populate()
en tant que méthode, au nœud DOM :
HTMLSelectElement.prototype.populate = function (opts) {
var settings = {};
settings.min = 0;
settings.max = settings.min + 100;
for (var userOpt in opts) {
if (opts.hasOwnProperty(userOpt)) {
settings[userOpt] = opts[userOpt];
}
}
for (var i = settings.min; i <= settings.max; i++) {
this.appendChild(new Option(i, i));
}
};
document.getElementById('selectElementId').populate({
'min': 12,
'max': 40
});
Démonstration de JS Fiddle .
Références :
0 votes
Voir stackoverflow.com/questions/170986/
15 votes
Vote pour la réouverture, car le "doublon" lié n'a que des réponses basées sur jQuery, alors que celui-ci requiert (ou du moins implique une exigence de) JavaScript simple.
3 votes
Excellente réponse ici :
mySelect.options[mySelect.options.length] = new Option('Text 1', 'Value1');