Je trouve pas mon erreur... [Javascript] - HTML/CSS - Programmation
MarshPosté le 09-04-2003 à 14:46:00
Je suis en train d'apprendre a manipuler le javascript , mais vu qu'on a pas de compilateur (a ce que je sache..?) c'est chiant
voilà mon code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="JavaScript" > var a, cpt,verif,com,I; array1 = new Array (5) ; array1[1] = "Poisson" ; array1[2] = "Cigare" ; array1[3] = "Chocolat" ; array1[4] = "Bonbon" ; array1[5] = "Miel" ;
//ini verif=0; cpt=1 ; com=0; I=1; document.write("I="+I+"<br>" ); //Verif de vérif if (verif==0) { document.write(" verif est égale a 0<br>" );} //boucle while while(verif==0) { a = prompt ("Yo , t\' aime quoi comme aliments", "Donne en 1" ) ; //prompt
while(I <= 5 ) { if (a == array1[I]) {document.write("Moi aussi jaime les "+ a +" !<br>" ); com++;}; I++; };//Le bug est quand j'ai rajouter le while(I<=5){}; else{document.write("Ben moi j\'aime pas les "+a+"<br>" );};//else if (cpt==5){verif=1}; cpt++ ; }; document.write("nous avons " +com + " aliments en commun" );
</script> </head>
<body>
</body> </html>
En fait , avant j'avais fais un truc pas tres pratique : if (a == array1[1] || a == array1[2] || a == array1[3] || a == array1[4] || a == array1[5]){document.write("Moi aussi jaime les "+ a +" !<br>" );
Ordonne ton code, tu verras tout de suite ton erreur avant tu faisais un :
Code :
if condition
document.write("moi aussi..." );
else
document.write("moi j'aime pas..." );
et maintenant tu fais :
Code :
while ...
document.write("moi aussi..." );
else
document.write("moi j'aime pas..." );
C'est normal qu'il n'apprecie pas qu'il y ait un else sans if devant.
Message édité par walli le 09-04-2003 à 15:23:41
--------------- NP :
smilm
Posté le 09-04-2003 à 15:38:21
Mon code c'est ca : while(I <= 5 ) { if (a == array1[I]) {document.write("Moi aussi jaime les "+ a +" !<br>" ); com++;}; I++; }; else{document.write("Ben moi j\'aime pas les "+a+"<br>" );};//else if (cpt==5){verif=1}; cpt++ ; }; Ya bien le If et le else... avec le while avant , je capte pas !
Mon code c'est ca : while(I <= 5 ) { if (a == array1[I]) {document.write("Moi aussi jaime les "+ a +" !<br>" ); com++;}; I++; }; else{document.write("Ben moi j\'aime pas les "+a+"<br>" );};//else if (cpt==5){verif=1}; cpt++ ; }; Ya bien le If et le else... avec le while avant , je capte pas !
et celle la qu'est qu'elle fiche la ? elle te ferme ton while avant que tu ne mettes ton else !
de plus le fait de faire une boucle sur ton 'I' et de l'incrementer, va faire en sorte qu'il va te tester d'abord si c'est égal à array1[1], puis apres si c'est égal à array1[2], etc.... et non si c'est égal à array1[I] avec I compris entre 1 et 5.
il faut donc que tu fasses ton test pour toute valeur de I comprise entre 1 et 5. je sais pas si je suis très claire
et celle la qu'est qu'elle fiche la ? elle te ferme ton while avant que tu ne mettes ton else !
de plus le fait de faire une boucle sur ton 'I' et de l'incrementer, va faire en sorte qu'il va te tester d'abord si c'est égal à array1[1], puis apres si c'est égal à array1[2], etc.... et non si c'est égal à array1[I] avec I compris entre 1 et 5.
il faut donc que tu fasses ton test pour toute valeur de I comprise entre 1 et 5. je sais pas si je suis très claire
Si j'ai compris , j'avais ce probleme au début, c'est pour ca que j'ai fais apparaitre le I et sa boucle. Il va en principe me permettre qu'il test toute les valeurs pour array1 (de 1 a 5) , avant de faire son document.write ... Mais si je ferme ma boucle aprés le else ,ca fera un document write si jamais A <> array1[I]
et celle la qu'est qu'elle fiche la ? elle te ferme ton while avant que tu ne mettes ton else !
de plus le fait de faire une boucle sur ton 'I' et de l'incrementer, va faire en sorte qu'il va te tester d'abord si c'est égal à array1[1], puis apres si c'est égal à array1[2], etc.... et non si c'est égal à array1[I] avec I compris entre 1 et 5.
il faut donc que tu fasses ton test pour toute valeur de I comprise entre 1 et 5. je sais pas si je suis très claire
Et c'est quoi ta solution pour ca ? ( a part : [i]if (a == array1[1] || a == array1[2] || a == array1[3] || a == array1[4] || a == array1[5]){document.write("Moi aussi jaime les "+ a +" !<br>" ); [/i] Solution pas tres modulable..
Si j'ai compris , j'avais ce probleme au début, c'est pour ca que j'ai fais apparaitre le I et sa boucle. Il va en principe me permettre qu'il test toute les valeurs pour array1 (de 1 a 5) , avant de faire son document.write ... Mais si je ferme ma boucle aprés le else ,ca fera un document write si jamais A <> array1[I]
nan, avec ton ancien test, ton problème ne se posait pas !
nan, avec ton ancien test, ton problème ne se posait pas !
Mon ancien test ? avec ca : if (a == array1[1] || a == array1[2] || a == array1[3] || a == array1[4] || a == array1[5]){document.write("Moi aussi jaime les "+ a +" !<br>" ); ?? Parce que si j'ai 10000 trucs a mettre ... ca va pas etre super! a==array1[999]...a==array1[1000]...
A moins que tu parles d'autre chose ? Dans ce cas , je ne comprends pas ,peut tu me montrer le code de mon ancienne solution ?
ps: j'ai pris un pseudo de double, mais c'est SmilM
Mon ancien test ? avec ca : if (a == array1[1] || a == array1[2] || a == array1[3] || a == array1[4] || a == array1[5]){document.write("Moi aussi jaime les "+ a +" !<br>" ); ?? Parce que si j'ai 10000 trucs a mettre ... ca va pas etre super! a==array1[999]...a==array1[1000]...
A moins que tu parles d'autre chose ? Dans ce cas , je ne comprends pas ,peut tu me montrer le code de mon ancienne solution ?
ps: j'ai pris un pseudo de double, mais c'est SmilM
Ce que je voulais dire c'est que ton ancien code fonctionnait, mais qu'effectivement, ça n'est pas terrible si jamais tu as un tableau à 100 éléments. Ce que je ferais à ta place c'est passer par une deuxième fonction qui va parcourir ton tableau et qui te ramène un booleen : true si ta variable 'a' est dans ton tableau, sinon elle te ramene false. apres tu as juste un test à faire sur ton booleen pour écrire si oui tu aimes... ou si tu n'aimes pas...
Ca me parait bien compliquer pour faire quelque chose de basique , j'ai essayer quelque chose avec mon pere hier ,mais ca plantait aussi. J'essayerai ta technique plus tard et je te donnerais des nouvelles.
Merci beaucoup Walli
--------------- Regarde le ciel, et vois ce que tu peux voir.
Marsh Posté le 09-04-2003 à 14:46:00
Je suis en train d'apprendre a manipuler le javascript , mais vu qu'on a pas de compilateur (a ce que je sache..?) c'est chiant
voilà mon code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" >
var a, cpt,verif,com,I;
array1 = new Array (5) ;
array1[1] = "Poisson" ;
array1[2] = "Cigare" ;
array1[3] = "Chocolat" ;
array1[4] = "Bonbon" ;
array1[5] = "Miel" ;
//ini
verif=0;
cpt=1 ;
com=0;
I=1;
document.write("I="+I+"<br>" );
//Verif de vérif
if (verif==0) { document.write(" verif est égale a 0<br>" );}
//boucle while
while(verif==0)
{
a = prompt ("Yo , t\' aime quoi comme aliments", "Donne en 1" ) ; //prompt
while(I <= 5 )
{
if (a == array1[I])
{document.write("Moi aussi jaime les "+ a +" !<br>" );
com++;};
I++;
};//Le bug est quand j'ai rajouter le while(I<=5){};
else{document.write("Ben moi j\'aime pas les "+a+"<br>" );};//else
if (cpt==5){verif=1};
cpt++ ;
};
document.write("nous avons " +com + " aliments en commun" );
</script>
</head>
<body>
</body>
</html>
En fait , avant j'avais fais un truc pas tres pratique :
if (a == array1[1] || a == array1[2] || a == array1[3] || a == array1[4] || a == array1[5]){document.write("Moi aussi jaime les "+ a +" !<br>" );
c'est pas tres modulable...mais ca marche.
Merci d'avance.
---------------
AfterEnd: Batissez un nouveau monde