Le plus gros problème avec la technique document.createElement est qu'il est vraiment lent. Utiliser un framework est le meilleur, mais dans les deux cas, je suggère de construire la liste des options et de définir la propriété innerHTML dans la boîte de sélection.
strOptions = "";
for (blah blah blah)
{
strOptions += '<option value="' + day + '">' + day + '</option>'
}
birthDay.innerHTML = strOptions;
Le navigateur va être capable d'analyser le code HTML beaucoup plus vite que vous serez en mesure de construire ces éléments à la main.
En réponse au commentaire, c'est vraiment pourquoi l'utilisation d'une bibliothèque de plate-formes en vaut toujours la peine. En YUI3, je fais ceci:
var fillSelectbox = function(select, optionList) {
var i, option = '';
for (i = 0; i < optionList.length; i += 1) {
option += '<option value="' + optionList[i].Value + '" selected="' + (optionList[i].selected ? '"selected"' : '""') + '">' + optionList[i].Text + '</option>';
}
select.append(option);
select.set('selectedIndex', -1);
};
Où est la sélection selectNode et optionList est un tableau JavaScript.
Sauf dans IE (même 8), vous ne pouvez pas régler correctement le innerHTML d'une balise SELECT. – seanmonstar
expliquez comment l'utilisation d'un framework peut accélérer la manipulation DOM ... – Christoph
Le framework normalise les bugs dans l'implémentation du navigateur sous-jacent, ce qui me permet de faire le style innerHTML le plus rapide sur Internet Explorer. Même en utilisant la plate-forme, la construction d'une chaîne de texte au lieu d'un grand nombre de balises d'option sera plus rapide, ce qui est important lorsque l'on traite des ensembles de données relativement volumineux. – foxxtrot