Je ne trouve pas le problème

Résolu
franckjs Messages postés 2 Date d'inscription vendredi 25 novembre 2011 Statut Membre Dernière intervention 25 novembre 2011 - 25 nov. 2011 à 15:37
franckjs Messages postés 2 Date d'inscription vendredi 25 novembre 2011 Statut Membre Dernière intervention 25 novembre 2011 - 25 nov. 2011 à 21:20
Bonjour à tous.

Je débute sur ce forum et ne sais pas si je poste au bon endroit.
J'ai un petit souci concernant une fonction en javascript qui est sensée vérifier que des objets ont les bons parents.

Voici la fonction que j'ai créé.
Elle doit renvoyer :
- un message d'erreur si les objet1, 2, 3 et 4 n'ont pas comme parent respectivement cible1, 2, 3 et 4.
- "Bravo" si tous les objets sont bien placés.

Le problème c'est qu'elle renvoie "Bravo" si cible1 est le parent d'objet1 quelque soient les parents des autres objets. Je ne trouve pas l'erreur.

Je précise que c'est ma première fonction en js et qu'elle est sans nul doute perfectionnable...

function verif() { //permet de tester la position des objets sur les bonnes cibles
  var x=new Array(); //déclaration du tableau
  for (i=1;i<5;i++) { //remplissage du tableau
x[i]=document.getElementById("objet"+i).parentNode.id;
if (x[i]!="cible"+i) { //test des valeurs du tableau
  alert("Vous avez commis des erreurs.");
  break;
} 
else {
  alert("Bravo !");
  break;
}
  }
}

Si quelqu'un avait une idée, merci.

2 réponses

galled Messages postés 41 Date d'inscription vendredi 30 octobre 2009 Statut Membre Dernière intervention 13 décembre 2012
25 nov. 2011 à 16:00
Bonjour,

Le premier problème que je vois c'est que ton if est dans la boucle, donc ce qui se produit c'est que tu test seulement un element et non pas les 5. Tu test 1 tu envois 1 message et tu sort de ta boucle.

Ce que je te conseil de faire c'est de boucler en entier avec un système de boolean. Tu met par exemple un boolean a vrai et si tout est correct il ressort a vrai. Tu le test et puis dépendament de ce que le boolean est tu affiche le message.

function verif() { //permet de tester la position des objets sur les bonnes cibles
 var tout_correct = true;
  for (i=1;i<5;i++) { //remplissage du tableau
if (document.getElementById("objet"+i).parentNode.id!="cible"+i) {  //test des valeurs du tableau
   tout_correct = false;
           break;
        }
  }
 if(tout_correct )
   alert("Bravo !");
 } 
 else {
   alert("Vous avez commis des erreurs.");
 }
} 

Quelque chose comme ça je ne l'ai pas tester donc il se peut qu'il y est des erreurs.
3
franckjs Messages postés 2 Date d'inscription vendredi 25 novembre 2011 Statut Membre Dernière intervention 25 novembre 2011
25 nov. 2011 à 21:20
Merci ! Cela fonctionne. J'ai compris mon erreur et l'explication : très pédagogique. Je n'ai pas le réflexe d'utiliser les booleans.

Il est étonnant de ne pas voir une erreur alors que la solution (qu'on nous donne) nous parait évidente... Mais bon, c'est en forgeant que l'on devient forgeron, il paraît. Cependant, la maxime ne dit pas au bout de combien de temps.

Merci encore.
0
Rejoignez-nous