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:

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>
Merci pour votre aide