2009-11-06 4 views
0

Ma fonction efface une liste déroulante, puis la renseigne à nouveau. Ai-je vraiment besoin de tout cela ou y a-t-il une façon plus concise de le faire? Signification dois-je créer un nouveau document.createElement ("option"); ou y a-t-il un raccourci?Raccourci pour document.createElement ("option")?

 for (blah blah blah) 
     { 
      objNewOption = document.createElement("option"); 
objNewOption.value = day; 
objNewOption.text = day; 
birthDay.options.add(objNewOption); 
     } 

Répondre

1

Est-ce vraiment long? Ce n'est pas beaucoup à taper.

Si vous souhaitez utiliser un framework, comme MooTools ou Prototype, ils ont une classe Element, vous permettant de le faire en une ligne.

var opt = new Element('option', { value: day, text: day }); 
0

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.

+1

Sauf dans IE (même 8), vous ne pouvez pas régler correctement le innerHTML d'une balise SELECT. – seanmonstar

+1

expliquez comment l'utilisation d'un framework peut accélérer la manipulation DOM ... – Christoph

+0

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

2
var new_option_element = new Option(display_label, value, selected_boolean); 
2

Créer votre propre raccourci ...

function x() { return document.createElement("option"); } 

for(blah blah blah) { 
    objNewOption = x(); 
} 
Questions connexes