IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Modification de mon code javascript


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Par défaut Modification de mon code javascript
    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

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Salut,
    for(var i=0,l=sel.length;i<l;i++)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(var i=0;i<sel.length;i++)
    sel[i].value = valeurs[nb]; // On lui applique l'ancienne valeur de <select> modifié
    valeurs[i] = valeurs[nb];
    Tu ne dois pas permuter les valeurs de valeurs[nb] et valeur[i]?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sel[i].value = valeurs[nb];
    var a = valeurs[i];
    valeurs[i] = valeurs[nb];
    valeurs[nb]=a;

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Par défaut
    Merci, je vais essayer ça de suite et je vous tiens au courant.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(var i=0;i<sel.length;i++)
    Tu ne dois pas permuter les valeurs de valeurs[nb] et valeur[i]?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sel[i].value = valeurs[nb];
    var a = valeurs[i];
    valeurs[i] = valeurs[nb];
    valeurs[nb]=a;
    Hélas, ça ne fonctionne pas. Les changements ne se sont plus du tout. lorsque je remplace 1 par 2, 2 reste à 2 et 1 disparait.

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Enlève valeurs[nb] = val; après la boucle for.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Enlève valeurs[nb] = val; après la boucle for.
    Ca ne fonctionne pas non plus.

    J'ai pu constater que lorsque j'inverse 1 et 2 le résultat donne cela à l'affichage instantanné:
    2
    1
    3
    Puis lorsque j'inverse 3 et 1, le résultat me donne cela:
    3
    1
    2
    au lieu de
    2
    3
    1
    comme souhaité.
    Je remarque que le 3 prend la place de la "valeur" 1 (rang 1) au lieu de prendre la place du 2.

    par contre, si au lieu d'inverser le 1 par le 3 je fais
    3
    1
    2
    le résultat est:
    2
    3
    1
    résultat recherché mais illogique dans le principe de fonctionnement que je souhaite.

    Si ça peut vous aider à trouver la solution à mon problème...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Petite aide pour mon code javascript
    Par bennji dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/12/2008, 19h42
  2. [DOM] Mon code javascript s'arrete sans erreur.. (GetElementByID)
    Par Titi41 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 30/06/2008, 10h52
  3. le htm bloque mon code javascript
    Par guillaumeIOB dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/12/2007, 09h20
  4. une faute dans mon code javascript.
    Par jack_1981 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/05/2006, 03h05
  5. Problème de paramètres dans mon code javascript
    Par cocacollection dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/03/2006, 10h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo