Mutiplication des champs Javascript

Répondre
eagle
le 08/04/2008 à 19:24
eagle
Boujour

Avec Javascript Je voudrais faire une opération de multiplication avec des nombres que l'on entre dans des champs.
Mais dans le champ resultat j'ai comme message "NaN" aide moi s'il te plait merci.

Je suis debutant en javascript
evans
LupusMic
le 09/04/2008 à 17:51
LupusMic
(evans) La Globule a raison, sans le code on ne peut rien affirmer. C'est une bonne habitude de fournir un bout de code reproduisant le problème que tu rencontre. Avec la bouteille, ça aide même à résoudre la chose tout seul.

Cependant, l'erreur est évident : tu tente de multiplier des chaînes (qui a dit du pain !).

12345 n'est pas un nombre, c'est une chaîne de caractère représentant un nombre. C'est très important à comprendre. Le nombre, on ne peut pas le voir, on ne peut que se pâmer devant sa représentation.

Maintenant, pour être pratique, lorsqu'on écrit un programme, il faut bien l'écrire le nombre, et le différencier d'une chaîne représentant.

Pour cela, classiquement :
12345 est la chaîne de caractère qui représentera le nombre
"12345" représente la chaîne de la chaîne qui représente le nombre. En PHP et Javascript, tu peux aussi la représenter par '12345'.

Donc pour en revenir à ton problème. Ce que tu essaye de faire c'est : "12345" * "789", ce qui n'a pas de sens (enfin, on pourrait lui donner un sens, mais c'est un autre problème).
Tu fais ça parce que le contenu d'un input est toujours une chaîne de caractère, et ne représente jamais un nombre. C'est toi qui croit saisir un nombre, mais en fait tu sais une chaîne.
Il faut donc traduire cette chaîne en nombre.

Parfois, comme dans PHP, cette conversion peut être automatique. En javascript aussi, dans certaines conditions. Mais pour ma part, je ne fais pas confiance aux transtypages automatiques, car ils entraîne des erreurs comme celle à laquelle tu fais face.

Il faut donc, avant de multiplier les deux chaînes, les transtyper en nombre :

var lhs = gauche.toNumber()
var rhs = droite.toNumber()

var result = rhs * lhs
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
LupusMic
le 10/04/2008 à 15:10
LupusMic
J'ai un gros problème en ce moment, je me suis remis au C++ et je réfléchis beaucoup à tout un tas de trucs à base de design patterns. Du coup, j'arrête pas de pisser des pavés pour libérer mon esprit.

Alors forcément, je ne me retiens plus :p
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
zebden
le 11/04/2008 à 16:51
zebden
Même pour Pâques, il te sort le pavé smiley
zebdinou pour les intimes / Blog : http://www.zebden.fr
LupusMic
le 11/04/2008 à 20:07
LupusMic
(zebden) Pâques est derrière nous, les cloches sont parmis nous :-D

Enfin, avec tout ça j'ai fait peur à evans.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours