Il n'est pas possible de le faire directement en attribuant une valeur à -1 à l'objet select. Malheureusement, cela ne fonctionne pas...
Une autre idée serait d'itérer sur tous les éléments du select pour les désélectionner :
1 2 3
| for(var i = 0; i < oSelect.length; i++){
oSelect.options[i].selected = false;
} |
Cette solution fonctionne, mais n'est pas optimale car l'itération se fait aussi sur les options non sélectionnées et le traitement n'est pas optimisé.
On peut alors penser à ne faire l'itération que sur les options sélectionnées à l'aide du boucle
while et de la propriété
selectedIndex qui retourne l'index de la première option sélectionnée ou -1 si aucun option ne l'est.
1 2 3 4 5
| function deselect(oSelect){
while(oSelect.selectedIndex > -1){
oSelect.options[oSelect.selectedIndex].selected = false;
}
} |
Cette façon de procéder est efficace et produit le résultat attendu, cependant,
selectedIndex est une propriété de type
read / write, ce qui signifie que l'on peut lui affecter une valeur. La solution la plus efficace sera donc d'affecter à
selectedIndex la valeur -1 pour désélectionner toutes les options :
1 2 3
| function deselect(oSelect){
oSelect.selectedIndex = -1;
} |
Partager