[Javascript]Je trouve pas mon erreur...

Je trouve pas mon erreur... [Javascript] - HTML/CSS - Programmation

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
mood
Publicité
Posté le 09-04-2003 à 14:46:00  profilanswer
 

n°356725
walli
Posté le 09-04-2003 à 15:21:59  profilanswer
 

Ordonne ton code, tu verras tout de suite ton erreur ;)
avant tu faisais un :

Code :
  1. if condition
  2.        document.write("moi aussi..." );
  3.      else
  4.        document.write("moi j'aime pas..." );


et maintenant tu fais :  

Code :
  1. while ...
  2.        document.write("moi aussi..." );
  3.      else
  4.        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 :
n°356740
smilm
Posté le 09-04-2003 à 15:38:21  profilanswer
 

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 !:(


---------------
AfterEnd: Batissez un nouveau monde
Reply

Marsh Posté le 09-04-2003 à 15:58:59    

SmilM a écrit :

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


Message édité par walli le 09-04-2003 à 16:02:08

---------------
NP :
Reply

Marsh Posté le 09-04-2003 à 20:28:15    

walli a écrit :


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


 
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]


---------------
AfterEnd: Batissez un nouveau monde
Reply

Marsh Posté le 09-04-2003 à 20:30:55    

walli a écrit :


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


 
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..
 


---------------
AfterEnd: Batissez un nouveau monde
Reply

Marsh Posté le 09-04-2003 à 20:31:57    

SmilM a écrit :


 
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 !


---------------
NP :
Reply

Marsh Posté le 10-04-2003 à 14:51:38    

walli a écrit :


 
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

Reply

Marsh Posté le 10-04-2003 à 15:01:36    

michael50000 a écrit :


 
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...
 


---------------
NP :
Reply

Marsh Posté le 11-04-2003 à 13:27:54    

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


---------------
Regarde le ciel, et vois ce que tu peux voir.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed

© 2018 Forum. All Rights Reserved.