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

Eléphanteau du PHP | 29 Messages

12 juin 2006, 16:58

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--; }

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

12 juin 2006, 23:35

Salut,
il me supprime toujours le dernier meme si celui ci n'est pas selectionner...
document.recherche_nom.liste2.options.length--;
Non ?! :roll:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

12 juin 2006, 23:42

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;

Eléphanteau du PHP | 29 Messages

13 juin 2006, 09:04

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); }

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

13 juin 2006, 10:46

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 ;)