Bonsoir à tous,
Je viens vous soumettre un code car je rencontre une difficulté que je n'arrive pas à résoudre. en effet, mon objectif est de pouvoir avoir des menus déroulants qui me permettent de modifier des positions. par exemple:
1 devient 2 donc, 2 devient 1
3 devient 4 donc, 4 devient 3
etc....
Mon code fonctionne parfaitement comme cela. par contre,
si je passe 1 en 2, puis tout de suite 3 en 1, lorsque j'envoie, le résultat me donne en première place 3, en 2ème 1 et en 3ème 2.
visuellement ça donne ça:
depart première modif deuxième modif validation résultat
1-------2--------------2----------------x-----------3
2-------1--------------3----------------x-----------1
3-------3--------------1----------------x-----------2
Le résultat est donc erroné.
Voici mon code:
Merci pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <script type="text/javascript"> var sel; // Variable pour récupérer tous les <select> var valeurs = []; // Tableau pour garder en mémoire les valeurs function rang(nb) { // En paramètre l'indice du <select> var val = sel[nb].value; // On garde dans "val" la valeur du <select> modifié for(var i=0,l=sel.length;i<l;i++) { // On parcourt la totalité des <select> if((i!=nb) && (sel[i].value == val)) { // Si ce n'est pas le <select> modifié et que la valeur correspond sel[i].value = valeurs[nb]; // On lui applique l'ancienne valeur de <select> modifié valeurs[i] = valeurs[nb]; // Et on enregistre le changement dans le tableau des valeurs } } valeurs[nb] = val; // On enregistre également le changement du <select> modifié } window.onload=function() { // Au chargement (initialisation) sel = document.getElementsByTagName("select"); // On récupère tous les éléments <select> dans "sel" for(var i=0,l=sel.length;i<l;i++) { // On parcourt tout valeurs.push(sel[i].value); // Et on sauvegarde les valeurs dans le tableau "valeurs". } } </script>
Partager