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:
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?