Mystère en JavaScript

Fermé
Trashboat - 23 juin 2015 à 13:45
 Utilisateur anonyme - 23 juin 2015 à 21:16
Bonjour,

J'ai rencontré un étrange problème dans une condition en JavaScript, je l'ai tout bêtement résolu en changeant les testes de places, je cherche juste une explication :

Toutes les variables sont des chaînes de caractères, à part les coordx et coordy qui sont des entiers.
Toutes les variables ont été initialisées auparavant

Elles sont remplies par un formulaire. A chaque envoi, je rempli nom, adresse, cp, ville, et laisse les coordx et y vide, pour pouvoir rentrer dans la condition:

Voici la condition qui est sensée afficher les valeurs de coordx et coordy :
if ( nom.value=="" || adresse.value=="" || cp.value=="" || ville.value=="" || coordx.value==0 || coordy.value==0)
{
alert(coordx.value+"/"+coordy.value);
}


Cependant le code ne rentre pas dans la condition O_o.
Et ça ne peut pas venir d'ailleurs, puisque lorsque je change les testes de places ça marche très bien, exemple :

if (coordx.value==0 || coordy.value==0 || nom.value=="" || adresse.value=="" || cp.value=="" || ville.value=="")
{
alert(coordx.value+"/"+coordy.value);
}


Dans cet ordre ça marche parfaitement. Et dans n'importe quel ordre, tant que les deux coordx et coordy ne sont pas à la fin.
Si il y a une explication, en avez vous une ? Ou alors est-ce un problème totalement mystique ?

Vous aurez compris qu'ici ce n'est qu'une interrogation, que mon problème est résolu et qu'il n'y a aucune urgence.

Merci beaucoup, bonne journée =)

Vous êtes doux

A voir également:

2 réponses

Utilisateur anonyme
23 juin 2015 à 14:51
Bonjour

J'ai reproduit le défaut.
À mon humble avis, une (ou plusieurs) de tes variables n'est pas définie, et ton script plante pendant l'évaluation des "ou" du fait de cette variable non définie.
Par contre, si coordx.value est bien défini et vaut bien 0, dans ta deuxième version, l'évaluation de l'expression s'arrête dès le test coordx.value==0. Inutile de continuer puisque la première condition est vraie et que c'est un ou.
Les autres variables ne sont pas testées, donc pas de plantage même si elles n'existent pas.

Si tu regardes dans la console javascript, avec ta première version de l'expression, tu dois trouver une erreur de variable non définie.
0
Mais tout est bien défini (ce n'est pas réellement comme ça dans mon code):

$p_nom="";
$p_ville="";
$p_adresse="";
$p_cp="";
$p_coordonneesX=0;
$p_coordonneesY=0;


<input type="text" value="<?php echo $p_nom; ?>" name="nom" id="nom"/> 
<input type="text" value="<?php echo $p_adresse;?>" name="adresse"/>
<input type="text" value="<?php echo $p_ville;?>" name="ville"/>
<input type="text" value="<?php echo $p_cp;?>" name="cp"/>
<input id="coordx" value="<?php echo $p_coordonneesX;?>" name="coordx" type="number">
<input id="coordy" value="<?php echo $p_coordonneesY;?>" name="coordy" type="number">


Mais la condition marche même si les testes sur les coordx ou y ne sont pas au début. Et j'ai aussi essayé en ne remplissant pas chacune des variables. Et ça marche.

La condition marche également quand je retire les testes sur les coordx et y. C'est à devenir fou cette histoire.

Je suis en stage dans une entreprise de développement web, j'ai demandé son avis à la développeuse avec qui on a regardé le code pendant 20 minutes, elle ne sait pas d'où ça peut venir, et m'a confirmé qu'il n'y avait pas d'erreurs dans mes variables.
0
Utilisateur anonyme
23 juin 2015 à 17:08
Quel rapport entre ce code et celui de ton premier message ? Il n'y a pas le moindre javascript ici. Ce code ne définit PAS de variables javascript "nom", "adresse", etc.
0
Ce ne sont pas des variables javascript, je récupère la valeur de mes inputs
0
Utilisateur anonyme
23 juin 2015 à 21:16
Ce ne sont pas des variables javascript
Justement, quel est le rapport ? Je t'ai expliqué que le problème venait très probablement de ce que l'une variables de ton script n'étaient pas définies. Or, les variables de ton code javascript sont des variables javascript (Bonjour M. de la Palice), quel rapport avec ton HTML et ton PHP ? Peux-tu montrer la définition de tes variables javascript nom, adresse, cp, etc. ?
0