Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/04/2011, 08h47   #1
Invité de passage
 
Inscription : avril 2008
Messages : 12
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2008
Messages : 12
Points : 2
Points : 2
Par défaut Bug variable dans condition

Bonjour,
Je suis en proie à un bug incompréhensible.
Je précise que je suis autodidacte en javascript mais que j'ai de bonnes bases en programmation (C).

Nous sommes dans une fonction JS qui prend en paramètre la variable "vivit"
Le tableau "tableau" est une variable globale...


Code :
1
2
3
4
5
6
7
8
    alert (tableau[10])
    alert (vivit)
    alert(vivit > tableau[10])
 
       if (vivit > tableau[10])
       {
          alert ("RECORD");
       }

Lorsque
tableau[10] = 297.45 (initialiser à l'extérieur de la fonction)
vivit = 47.58 (paramètre de la fonction

J'obtiens :
Citation:
alert = 297.45 // OK
alert = 47.58 // OK
alert = true // Ce qui est faux
alert = RECORD //Ce qui est faux aussi...


****************
Ca me semble vraiment invraisemblable....

Après fouille, j'ai remarqué que si j'affectais à tableau [10] la valeur au début, ça refonctionnait...
tableau[10] = 297.45

Pourtant la fonction alert du premier exemple me donne la preuve que cette valeur était déjà bien présente....

Je suis perdu.. A coté de quoi je suis passé ?

Cordialement
hoffmann2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 09h16   #2
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 861
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 861
Points : 1 366
Points : 1 366
c'est effectivement étrange, parce que même si ton vivit ou ton tableau[10] étaient de types différents (exemple string et entier) la conversation devrait se faire automatiquement et correctement !

essaye de quand même regarder les types avec ceci :
Code :
1
2
alert(typeof vivit);
alert(typeof tableau[10]);
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 11h33   #3
Membre habitué
 
Avatar de omar24
 
Homme Omar
Inscription : septembre 2010
Messages : 146
Détails du profil
Informations personnelles :
Nom : Homme Omar
Localisation : Maroc

Informations professionnelles :
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : septembre 2010
Messages : 146
Points : 125
Points : 125
essaye de tester alert(vivit-tableau[10]); et vois ce qu'il va donner
omar24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 12h23   #4
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
attention à la définition des valeurs, justement;

vivit et tableau[10] sont visiblement interprétés comme des chaînes;

c'est logique si ce sont des valeurs de champ récupérées sans conversion;
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire.
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 07/04/2011, 12h42   #5
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 861
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 861
Points : 1 366
Points : 1 366
+1 javatwister

effectivement si les 2 valeurs sont des strings, la conversion ne se fait pas ! ( la comparaison effectue une conversion automatique pour transformer le string en Number seulement si l'une des 2 valeurs est un déjà Number)
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 13h57   #6
Invité de passage
 
Inscription : avril 2008
Messages : 12
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2008
Messages : 12
Points : 2
Points : 2
Merci beaucoup à tous !!!

Voilà qui me redonne des pistes à explorer !
Je ne pourrais tester cela que ce soir mais je vous tiendrai au courant.

J'utiliserai donc la fonction :
parseFloat()

avant la condition.


Cordialement
hoffmann2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2011, 10h12   #7
Invité de passage
 
Inscription : avril 2008
Messages : 12
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2008
Messages : 12
Points : 2
Points : 2
Vous êtes des as !

Tout fonctionne !

Merci beaucoup !
hoffmann2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h46.


 
 
 
 
Partenaires

Hébergement Web