adition en javascript

adition en javascript - HTML/CSS - Programmation

Marsh Posté le 01-12-2004 à 16:13:14    

Salut, j'ai le code suivant, quand je met c = a-b;, ça me fait 22-5=17 et quand je fait c = a+b; ça me donne 22+5=225.
 
Comment je dois faire pour faire une addition normale ?
 

Code :
  1. <SCRIPT LANGUAGE="JavaScript">
  2. <!-- Begin
  3. function calc1(form) {
  4. a = form.a.value/100;
  5. b = a*form.b.value;
  6. form.total1.value = b;
  7. }
  8. function calc2(form) {
  9. a = form.c.value;
  10. b = form.d.value;
  11. c = a-b;
  12. d = c*1;
  13. form.total2.value = d;
  14. }
  15. //  End -->
  16. </script>
  17. <form name="form1">
  18. <input type="text" name="a" size=5> <input type="text" name="b" size=5><input type="text" name="total1" size=5 maxlength=40>
  19. <input type="button" value="Calculate" onClick="calc1(this.form)"><input type="text" name="c" size=5><input type="text" name="d" size=5>
  20. <input type="text" name="total2" size=5>
  21. <input type="button" value="Calculate" onClick="calc2(this.form)"></td>
  22. </form>


Message édité par hyptos le 02-12-2004 à 16:01:23
Reply

Marsh Posté le 01-12-2004 à 16:13:14   

Reply

Marsh Posté le 01-12-2004 à 17:09:21    

Salut,
Les valeurs de champs sont des String. Il est donc normal que "22" + "5" fasse "225".
En faisant parseInt(a) + parseInt(b) tu obtiendras le bon résultat (conversion a la volée en integer). Je te recommande de faire la même chose pour la soustraction, c'est plus carré...

Reply

Marsh Posté le 01-12-2004 à 19:56:31    

Parfait ça marche génial, j'ai fait ça
 

Code :
  1. function calc2(form) {
  2. a = form.c.value;
  3. b = form.d.value;
  4. c = form.e.value;
  5. d = parseInt(a)+parseInt(b)+parseInt(c)
  6. form.total2.value = d;
  7. }


 
Mais j'ai un autre problème maintenant car si un champs est vide, le champ s total2 me donne la valeur "NaN"


Message édité par hyptos le 02-12-2004 à 16:01:10
Reply

Marsh Posté le 02-12-2004 à 09:29:28    

Not a Number!
Test avant! :D

Reply

Marsh Posté le 02-12-2004 à 10:16:43    

http://www.toutjavascript.com/refe [...] parent=210
Sinon tu peux aussi tester que le champ est vide...

Reply

Marsh Posté le 02-12-2004 à 15:02:25    

J'avoue ne pas être un génie en javascript, si je fais le test avec isNaN, comment je gère le resultats ?
 
J'ai essayé ça, à marche pas, je vois pas trop comment l'utilise.
 

Code :
  1. function calc2(form) {
  2. a = form.c.value;
  3. b = form.d.value;
  4. c = form.e.value;
  5. a = isNaN(form.c.value)
  6. b = isNaN(form.d.value)
  7. c = isNaN(form.e.value)
  8. d = parseInt(a)+parseInt(b)+parseInt(c)
  9. form.total2.value = d;
  10. }


Message édité par hyptos le 02-12-2004 à 16:00:58
Reply

Marsh Posté le 02-12-2004 à 15:33:10    

faut que tu testes tes valeurs avant de faire le calcul. la fonction isNaN() renvoie un boolean, il me semble.

Reply

Marsh Posté le 02-12-2004 à 15:41:00    

Je voudrais bien tester mais je ne sais pas comment faire, je suis néophite dans ce genre de programmation.
 
Si pouviez me donner un peu plus de détails, ça m'aiderai beaucoup
 
NB: Je cherche ce code pour améliorer un logiciel libre http://www.phppointofsale.com/, pour le php c'est ok mais pour le javascript je crains à mort.
 
Donc si vous m'aidez, vous aidez les logiciels libre :)


Message édité par hyptos le 02-12-2004 à 15:42:50
Reply

Marsh Posté le 02-12-2004 à 15:42:50    

1. merci de mettre ton code entre balises [ cpp ] et [ /cpp ]
2. si tu lis la page dont je t'ai donné l'url, tu verras que la méthode isNaN retourne un booleen : true si la variable est numérique, false sinon.
Donc quand tu fais a= isNaN(form.c.value), a vaut true ou false.
Il faut donc plutot faire par exemple :

Code :
  1. if (isNaN(form.c.value) == false) {
  2.   c = parseInt(form.c.value);
  3. }
  4. else {
  5.   c = 0;
  6. }


edit: balises foireuses


Message édité par swgreedo le 02-12-2004 à 15:52:34
Reply

Marsh Posté le 02-12-2004 à 15:55:42    

Je fais le code suivant et j'ai toujours NaN Si je ne rempli pas un input
 

Code :
  1. function calc2(form) {
  2. if (isNaN(form.c.value) == false) {
  3.   a = parseInt(form.c.value);
  4. }
  5. else {
  6.   a = 0;
  7. }
  8. if (isNaN(form.d.value) == false) {
  9.   b = parseInt(form.d.value);
  10. }
  11. else {
  12.   b = 0;
  13. }
  14. if (isNaN(form.e.value) == false) {
  15.   c = parseInt(form.e.value);
  16. }
  17. else {
  18.   c = 0;
  19. }
  20. d = parseInt(a)+parseInt(b)+parseInt(c)
  21. form.total2.value = d;
  22. }


Message édité par hyptos le 02-12-2004 à 15:56:41
Reply

Marsh Posté le 02-12-2004 à 15:55:42   

Reply

Marsh Posté le 02-12-2004 à 15:57:20    

mets isNaN(form.c.value) au lieu de (isNaN(form.c.value) == false)

Reply

Marsh Posté le 02-12-2004 à 16:00:41    

Le code suivant ne marche pas non plus
 

Code :
  1. function calc2(form) {
  2. if isNaN(form.c.value) {
  3.   a = parseInt(form.c.value);
  4. }
  5. else {
  6.   a = 0;
  7. }
  8. if isNaN(form.d.value) {
  9.   b = parseInt(form.d.value);
  10. }
  11. else {
  12.   b = 0;
  13. }
  14. if isNaN(form.e.value) {
  15.   c = parseInt(form.e.value);
  16. }
  17. else {
  18.   c = 0;
  19. }
  20. d = parseInt(a)+parseInt(b)+parseInt(c)
  21. form.total2.value = d;
  22. }

Reply

Marsh Posté le 02-12-2004 à 16:02:40    

argggg mets les parenthèses qd mm :  
 
(isNaN(form.c.value))

Reply

Marsh Posté le 02-12-2004 à 16:07:35    

J'ai trouvé grâce à vous j'ai juste inversé 2 lignes, merci à tous
 

Code :
  1. function calc2(form) {
  2. if (isNaN(form.c.value)) {
  3.   a = 0;
  4. }
  5. else {
  6.   a = parseInt(form.c.value);
  7. }
  8. if (isNaN(form.d.value)) {
  9.   b = 0;
  10. }
  11. else {
  12.   b = parseInt(form.d.value);
  13. }
  14. if (isNaN(form.e.value)) {
  15.   c = 0;
  16. }
  17. else {
  18.   c = parseInt(form.e.value);
  19. }
  20. d = parseInt(a)+parseInt(b)+parseInt(c)
  21. form.total2.value = d;
  22. }


Message édité par hyptos le 02-12-2004 à 16:13:25
Reply

Marsh Posté le 02-12-2004 à 16:12:54    

lol c'est l'inverse isnan = n'est pas un nombre
 
donc isnan(12) renverra false ;)

Reply

Marsh Posté le 02-12-2004 à 16:14:41    

esrevni a écrit :

lol c'est l'inverse isnan = n'est pas un nombre
 
donc isnan(12) renverra false ;)


 
Merci beaucoup je venais de le découvrir juste avant, j'ai modifié le post juste avant ton message.
 
Encore merci à tous

Reply

Marsh Posté le 02-12-2004 à 20:45:05    

Rebonjour,
 
J'ai retrouvé un problème, si un champs <input> n'existe pas dans mon code, le script ne fonctionne pas. Je n'ai pas trouvé de commande exist dans le site http://www.toutjavascript.com/reference/refe [...] ref=isNaN&parent=210
 
Comment faire pour que le code marche ?

Reply

Marsh Posté le 02-12-2004 à 22:01:42    

J'ai trouvé une solution en php, merci à tous.

Reply

Marsh Posté le 03-12-2004 à 18:02:43    

Finalement, j'ai toujours un problème, je voudrais qu'il y ai 2 décimales.
 
J'ai remplacé parseInt par parseFloat mais je ne sais pas le limité à 2 décimales.
 
Est-ce possible ?

Reply

Marsh Posté le 06-12-2004 à 09:12:41    

math.round(nb);
ca doit marcher ca je pense nan ?

Reply

Marsh Posté le 06-12-2004 à 10:12:04    

déjà traité il y a peu
 
http://forum.hardware.fr/forum2.ph [...] subcat=389
 
 :bounce:

Reply

Marsh Posté le 06-12-2004 à 10:28:05    

ok merci à tous

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed