Mutiplication des champs Javascript

Répondre
eagle
eagle
Déconnecté
evans
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
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Ben tu as fais quoi pour le moment ?

Montre nous ton code.
LupusMic
LupusMic
Déconnecté
Développeur récurrent, procédural et relationnel.
(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 :

  1. var lhs = gauche.toNumber()
  2. var rhs = droite.toNumber()
  3.  
  4. var result = rhs * lhs
  5.  
LA GLOBULE
LA GLOBULE
Déconnecté
111 111 111 x 111 111 111 = 12 345 678 987 654 321
Ca c'est de la réponse ! smiley
LupusMic
LupusMic
Déconnecté
Développeur récurrent, procédural et relationnel.
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
zebden
zebden
Déconnecté
zebdinou pour les intimes / Blog : http://www.zebden.fr
Même pour Pâques, il te sort le pavé smiley
LupusMic
LupusMic
Déconnecté
Développeur récurrent, procédural et relationnel.
(zebden) Pâques est derrière nous, les cloches sont parmis nous :-D

Enfin, avec tout ça j'ai fait peur à evans.
Répondre
Accès rapide :

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Php