Je ne trouve pas le problème [Résolu]

Messages postés
2
Date d'inscription
vendredi 25 novembre 2011
Statut
Membre
Dernière intervention
25 novembre 2011
- - Dernière réponse : 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.
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
41
Date d'inscription
vendredi 30 octobre 2009
Statut
Membre
Dernière intervention
13 décembre 2012
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 212 internautes nous ont dit merci ce mois-ci

Commenter la réponse de galled
Messages postés
2
Date d'inscription
vendredi 25 novembre 2011
Statut
Membre
Dernière intervention
25 novembre 2011
0
Merci
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.
Commenter la réponse de franckjs