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 :

Fonction javascript: boucle buggéé


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Par défaut Fonction javascript: boucle buggéé
    Bonjour, j'ai fait une fonction qui a pour but de traiter en boucle des données et les afficher sous certaines conditions. Voici le 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
    21
    22
    23
    24
    25
    26
    27
    28
    function req1(xhr) {  //Traitement des données de la requête type 1 = information sur la liste des joueurs présents
             if (xhr.readyState==4) {
     
                  var docXML = xhr.responseXML ;
                  var joueurs = docXML.getElementsByTagName("nom") ; //On recupère le document et on crée la variable joueurs qui contient tous les joueurs
                  var reponse = null ; //Variable qui sera utile par la suite
     
                   for(i=0;i<joueurs.length;i++) { //Boucle: tant qu'il reste des éléments non traités dans joueurs
                    reponse = joueurs.item(i).firstChild.data ; //On récupère les données du nom
                    alert(reponse) ;
                    var exist = false ; //variable servant à déterminer si le nom est déjà présent dans la liste
                    for(y=0;y<liste_joueurs.length;y++) { //On utilise une boucle pour vérifier si le nom qu'on vient de récupérer est déjà présent dans la liste ou non
                      if(liste_joueurs[y] == reponse) {
                        exist = true ; //Si on trouve le nom dans la liste la variable exist passe à TRUE ce qui empêche le nom d'apparaitre par la suite
                        continue ;
                        }
                      } 
                    if (exist == false){ //Si le nom n'est pas encore dans le tableau on l'y ajoute
                      var pos = liste_joueurs.length ; //On détermine la position dans le tableau que le prochain enregistrement doit avoir 
                      liste_joueurs[pos] = reponse ; //On ajoute le joueur à la liste(tableau liste_joueurs)
                  	  document.getElementById("liste").appendChild( document.createTextNode( reponse ) );
                      if (i!=joueurs.length) {  //Tant qu'on n'est pas à la dernière ligne, on rajoute un <br> à la fin de la ligne
                        document.getElementById("liste").appendChild( document.createElement("br") );
                        }
                      }
                  }
              }
            }
    Donc en gros lors de la première exécution de la boucle tout va bien, tous les noms sont affichées par la popup alert(reponse) mais à partir de la deuxième exécution seul le premier élément de "joueurs" est affiché...le comble pour un script sensé gérer les modifications de la bdd en temps réel.
    Avez vous des idées de l'élément qui cloche?

  2. #2
    Membre Expert
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Par défaut
    Pas évident...

    Déjà, "continue" est vraiment utile dans ta boucle de recherche, ce n'est pas "break" plutôt ?

    Affiche "joueurs.length" pour vérifier le nombre d'itération.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 79
    Par défaut
    J'ai juste remplacé continue par break et ça marche...faut pas chercher à comprendre probablement Merci toutefois pour cette astuce.

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

Discussions similaires

  1. Boucle dans une fonction javascript
    Par edward carnby dans le forum jQuery
    Réponses: 5
    Dernier message: 01/10/2012, 19h54
  2. Réponses: 5
    Dernier message: 13/08/2004, 15h40
  3. Réponses: 4
    Dernier message: 02/06/2004, 16h35
  4. Réponses: 11
    Dernier message: 10/05/2004, 10h49
  5. appel xmlservice via fonction javascript
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 06/05/2003, 14h24

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