Erreur syntaxe conditions sur un formulaire

Pour toutes les discussions javascript, jQuery et autres frameworks
moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Erreur syntaxe conditions sur un formulaire

Message par moon136 » 21 août 2017, 22:19

Bonjour

J'ai un autre soucis avec mon formulaire il n'est plus fonctionnel la console m'indique : SyntaxError: missing ) after condition[En savoir plus].
j'ai apporté des modifications le js pour retirer les NaN... avec des conditions


https://jsfiddle.net/kd1gsc2z/7/


merci de votre aide

Avatar du membre
Frosty
Messages : 83
Enregistré le : 20 juil. 2017, 13:23
Localisation : Grenoble

Re: Script formulaire non fonctionnel

Message par Frosty » 22 août 2017, 00:32

Bonjour/Bonsoir,

Chrome me donne dans la console un violent "Uncaught SyntaxError: Unexpected token !" :arrow: je clique sur le nom du fichier à droite du message d'erreur, et je vois immédiatement que sur cette ligne dans le JS il y a un gros pépin évident :

Code : Tout sélectionner

    else if (Mail ! == "" && testMail <= 0) {
Peut être que tu es sur un navigateur différent et que c'est pour ça que le message est différent de ton côté.
En tout cas, il y a des chances qu'ils indiquent tous les deux la même ligne ;)

moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Re: Erreur syntaxe conditions sur un formulaire

Message par moon136 » 22 août 2017, 01:31

bsr Frosty !

merci pour la reponse. jai telechargé brackets, et jai vu 178 problemes! j'ai essayé de corriger mais je ne comprends pas tout

102+ problèmes :
×
JSLint (9)
1 Expected 'VerifFormulaire' at column 1, not column 2. VerifFormulaire === 0;
1 'VerifFormulaire' was used before it was defined. VerifFormulaire === 0;
1 Expected an assignment or function call and instead saw an expression. VerifFormulaire === 0;
3 Missing 'use strict' statement. var erreur === 0;
3 Expected 'var' at column 5, not column 4. var erreur === 0;
[edit Frosty: je vire une bonne partie du log, c'est pas fondamental pour la résolution de tes problèmes et ça fait scroller pendant des heures pour aller à la fin de la discussion ;) ...]
25 Expected an operator and instead saw '!'. (E033) else if(Mail ! === "" && testMail <=== 0) {
25 Expected an identifier and instead saw '=='. (E030) else if(Mail ! === "" && testMail <=== 0) {
25 Unrecoverable syntax error. (15% scanned). (E041) else if(Mail ! === "" && testMail <=== 0) {

parfois je corrige et ca diminue les erreurs parfois ca ne fait rien

par exemple : Missing 'use strict' statement. var erreur === 0; ?? je comprend pas qu'est qi'il faut faire? tu vois..

merci de ton aide

Avatar du membre
Frosty
Messages : 83
Enregistré le : 20 juil. 2017, 13:23
Localisation : Grenoble

Re: Erreur syntaxe conditions sur un formulaire

Message par Frosty » 22 août 2017, 02:50

Je pense qu'avant de recourir à des outils d'analyse de code comme JSLint / JSHint, il faudrait déjà que tu parviennes à faire tourner ton script + formulaire simplement à partir d'exemples, de documentations/références JS, et de la console JavaScript de ton navigateur.
Une fois que ça te convient, tu sauvegardes et ensuite tu peux passer du temps à peaufiner/améliorer (ca aide à éviter de futurs problèmes si ton projet grossit).

Le 'use strict' c'est entre autres pour empêcher l'utilisation de variables non déclarées. Si tu fais une recherche Google "use strict JavaScript" ou "strict mode JavaScript" tu trouveras toutes les explications sur ce que ca fait et comment s'en servir.
Pas indispensable pour faire ton 1er "prototype" cela dit. si tu ne connais pas, ne t' embête pas avec ca pour le moment, même si l'emploi du mode strict me paraît globalement une bonne pratique.
A voir aussi quelle est sa compatibilité avec les navigateurs actuels, pour ma part je m'en suis servi pour des développements sur Node.js donc hors navigateur.

moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Re: Erreur syntaxe conditions sur un formulaire

Message par moon136 » 22 août 2017, 13:36

mon principal probleme et je m'en sors pas car par exemple jai une accolade dans le if is NaN
****

Code : Tout sélectionner

if (isNaN(Valeur3)) { Valeur3 = 0; }{
	choix = document.getElementById("resa3").value;




et jai 2 if qui se suivent j'ai mal indenter :

Code : Tout sélectionner

if (Valeur3!=''){
		if (choix==='demijour")
		Valeur3 = Valeur3*8;	}


c'est là que je crois que c'est faux

Avatar du membre
Frosty
Messages : 83
Enregistré le : 20 juil. 2017, 13:23
Localisation : Grenoble

Re: Erreur syntaxe conditions sur un formulaire

Message par Frosty » 22 août 2017, 14:17

Code : Tout sélectionner

if (isNaN(Valeur3)) { Valeur3 = 0; }{
Pourquoi tu as besoin d'une accolade ouvrante juste après le bloc "if" ? Ca va certainement donner une erreur de syntaxe

Ensuite pour les 2 "if" imbriqués, l'indentation importe peu pour le navigateur. Même si tu écris tout sur une ligne mais que c'est syntaxiquement correct il comprendra.

Par au niveau du 2ème bout de code il y a quand même un gros pépin flagrant : tu ne peux pas faire commencer une chaîne par un guillemet simple (') et la terminer par un guillemet double (") ça doit de donner une erreur de syntaxe dans la console :

Code : Tout sélectionner

if (choix==='demijour")
Soit tu mets des guillemets simples au début et à la fin, soit des guillemets doubles, mais pas un mélange des deux, ça ne fonctionnera pas.

Si tu laisses passer ce genre d'erreur, que tu n'arrives pas à imbriquer des "if" correctement etc. je t'encourage fortement à lire des tutos comme ceux de ce site (en cours de mise à jour car ils sont un peu anciens, mais la syntaxe enseignée et les exemples indiqués doivent toujours fonctionner) et chercher des exemples de "formulaire javascript" sur Google pour t'en inspirer, ça t'évitera d'avoir de grosses erreurs de syntaxe qui risquent de casser fréquemment le fonctionnement de ton script dès que tu voudras le modifier/améliorer

Fais aussi des sauvegardes régulières de ton script lorsque tu arrives à le faire fonctionner, pour pouvoir toujours repartir d'un point "sûr" si tu casses quelque chose et que tu n'arrive pas à comprendre pourquoi ça ne fonctionne plus même en ayant regardé la console.

moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Re: Erreur syntaxe conditions sur un formulaire

Message par moon136 » 22 août 2017, 15:00

dans brackets il m'a supprimé des erreurs en faisant comme ca pr rapports aux guillemets :

Code : Tout sélectionner

if (choix==='demijour")
mais tu as raison je vais pas le laisser comme ca

oui tu viens de me faire penser jai gardé ma version d'origine qui est fonctionnel, je vais la recopier et la retravailler pas a pas, car la je m'en sors plus..

brackets est lié à jslint ca embrouille plus qu'autre chose je crois.

merci pour tes conseils

Avatar du membre
Frosty
Messages : 83
Enregistré le : 20 juil. 2017, 13:23
Localisation : Grenoble

Re: Erreur syntaxe conditions sur un formulaire

Message par Frosty » 22 août 2017, 15:21

Oui je pense que tu peux laisser tomber brackets pour le moment

moon136
Messages : 51
Enregistré le : 12 août 2017, 15:00

Re: Erreur syntaxe conditions sur un formulaire

Message par moon136 » 23 août 2017, 02:03

salut

j'ai retrouvé mon script fonctionnel, le seul probleme c'est avec les conditions j'ai donc essayé pas a pas mais ca ne marche toujours pas :

Code : Tout sélectionner

(isNaN(Valeur)) { Valeur = 0; }
 choix = document.getElementById("resa1").value;
 
 if (choix===''demijour') {
      Valeur = Valeur*8;  
   } // fin du premier if

} // fin du second if

  else
  if (choix=="jour"){
  Valeur = Valeur*15;
  else if (choix=="repas"){
  Valeur = Valeur*7;
  document.getElementById("stot1").value = Valeur+" euros" ; 
 }else 
 {Valeur = 0};


 var Valeur2=0;
 Valeur2 = parseInt(document.getElementById("nombre2").value);
 if (isNaN(Valeur2)) { 
         Valeur2= 0; 
 choix = document.getElementById("resa3").value;
}
 if (choix==='demijour') {
      Valeur2 = Valeur2*8;  
   } // fin du premier if

} // fin du second if

  }else
  if (choix=="jour")
  Valeur2 = Valeur2*15;} 
  else if (choix=="repas"){
  Valeur2 = Valeur2*7;
  document.getElementById("stot2").value = Valeur2+" euros" ;
 }else 
 {valeur2 = 0};
 
 var Valeur3, totalht, tva, totalttc;
 Valeur3 = parseInt(document.getElementById("nombre3").value);
 
 if (isNaN(Valeur3)) { 
         Valeur3 = 0; 
 choix = document.getElementById("resa3").value;
}
 if (choix==='demijour') {
      Valeur3 = Valeur3*8;  
   } // fin du premier if

} // fin du second if
 
  else if (choix=="jour"){
  Valeur3 = Valeur3*15};
  else if (choix=="repas"){
  Valeur3 = Valeur3*7;
  document.getElementById("stot3").value = Valeur3+" euros" ;
 }else 
 {Valeur3 = 0};
 

Avatar du membre
Frosty
Messages : 83
Enregistré le : 20 juil. 2017, 13:23
Localisation : Grenoble

Re: Erreur syntaxe conditions sur un formulaire

Message par Frosty » 23 août 2017, 10:36

Il y a une erreur de syntaxe évidente sur une des premières lignes :

Code : Tout sélectionner

if (choix===''demijour') {
Tu la vois ?
Là encore, la console devrait indiquer une erreur (=> la prochaine fois que la console affiche une erreur, et que tu n'arrives pas à résoudre le problème correspondant, serait bien de copier coller le message d'erreur dans la discussion)

A part ça il manque carrément un "if" tout au début mais je suppose qu'il n'a pas été "pris" dans ton copier-coller...

Il faudrait aussi indenter tout ça de manière un peu plus lisible, car même si le navigateur s'y retrouve, ça m'éclate les yeux et le cerveau :cry:

Dans l'exemple qui suit, on comprend tout de suite quel bout de code va s'exécuter dans quel bloc "if" ou "else" :

Code : Tout sélectionner

if (truc === bidule) {
     variable1 = "chaine";
     alert("toto");
     if (tata === titi) {
          console.log("chouette");
     }
} else {
     machin = chose;
}
Conseil : utiliser un éditeur de texte/code avec coloration syntaxique et qui permet d'indenter du code sélectionné avec tab ou "désindenter" avec shift+tab, comme Sublime Text ou Atom
Entre autres, avec la coloration syntaxique lorsque les guillemets autour des chaines de caractères ne sont pas bons, on le voit tout de suite.

Répondre