franckjs
Messages postés2Date d'inscriptionvendredi 25 novembre 2011StatutMembreDernière intervention25 novembre 2011
-
25 nov. 2011 à 15:37
franckjs
Messages postés2Date d'inscriptionvendredi 25 novembre 2011StatutMembreDernière intervention25 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;
}
}
galled
Messages postés41Date d'inscriptionvendredi 30 octobre 2009StatutMembreDernière intervention13 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.
franckjs
Messages postés2Date d'inscriptionvendredi 25 novembre 2011StatutMembreDernière intervention25 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.