Page 1 sur 1

suppression dans un menu type <select></select>

Posté : 12 juin 2006, 16:58
par JDante
Bonjour tout le monde, j'ecirt un code pour supprimer un choix dans un menu de type <select></select>

je n'arive pas a dire a mon code de ne supprimer que les choix selectionner :? ... il me supprime toujours le dernier meme si celui ci n'est pas selectionner...

si qqun a une solution elle est la bien venu :)

Code : Tout sélectionner

function ajouteSup() { for (i = 0; i < Number(document.recherche_nom.liste2.options.length-1); i++) { if(document.recherche_nom.liste2.options[i].selected) { document.recherche_nom.liste2.options[i]= new Option((document.recherche_nom.liste2.options[ Number(i+1) ].text ),(document.recherche_nom.liste2.options[ Number(i+1) ].value) ); } } document.recherche_nom.liste2.options.length--; }

Re: suppression dans un menu type <select></select&

Posté : 12 juin 2006, 23:35
par Truc
Salut,
il me supprime toujours le dernier meme si celui ci n'est pas selectionner...
document.recherche_nom.liste2.options.length--;
Non ?! :roll:

Posté : 12 juin 2006, 23:42
par Ryle
Ca serait-y pas plus simple de mettre à null l'option pour la supprimer ?

Code : Tout sélectionner

document.recherche_nom.liste2.options[i] = null;

Posté : 13 juin 2006, 09:04
par JDante
j'ai resolu mon pb voila le code solution ^^

Code : Tout sélectionner

function ajouteSup() { j = 0; for (i = 0; i < Number(document.recherche_nom.liste2.options.length); i++) { if(!document.recherche_nom.liste2.options[i].selected) { document.recherche_nom.liste2.options[j]= new Option((document.recherche_nom.liste2.options[i].text ),(document.recherche_nom.liste2.options[i].value) ); j++; } } document.recherche_nom.liste2.options.length = Number(j); }

Posté : 13 juin 2006, 10:46
par Ryle
Y a des choses qui m'échappent dans ton code (nottament le new Option), sinon le Number() n'est pas utile pour des nombres implicite. Par exemple sur un .length, tu auras nécessairement une valeur numérique, du coup ça surcharge ton code pour rien :)

Mais sinon, pourquoi pas simplement une boucle dans l'autre sens pour supprimer les éléments sélectionnés (en partant du dernier et en revenant au premier pour ne pas modifier les index en cours de route) :

Code : Tout sélectionner

for (var i = document.recherche_nom.liste2.options.length; i >= 0 ; i--) { if(document.recherche_nom.liste2.options[i].selected) // si l'option est sélectionnée document.recherche_nom.liste2.options[i] = null; // on la supprime }

C'est à tester, mais ça me semble plus simple ;)