IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

l'addition en javascript


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 131
    Points : 58
    Points
    58
    Par défaut l'addition en javascript
    Bonsoir
    c'est surement une question de débutant mais lorsque j'essai d'additionner deux nombre situés dans deux zone de texte avec le symbole '+' il me les concaténe...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input type="button" name="plus" value="+" onclick="
    this.form.resultat.value = (this.form.nb1.value + this.form.nb2.value) ; ">
    exple : avec 1 et 2 le resultat est 12
    que dois-je faire??
    merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Utilise parseInt() pour convertir les strings de tes input en int

  3. #3
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 868
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 40
    Points
    40
    Par défaut Addition JS sous Internet Explorer = NaN
    Bonsoir,

    A propos des additions sous JS, je ne vois pas d'où vient mon problème. Le code ci-dessous additionne le nombre sous Firefox mais pas sous IE (NaN) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <script type="text/javascript">
     
    function totalite()
    {
    var p0 = document.getElementById('points0').value;
    var p1 = document.getElementById('points1').value;
    var p2 = document.getElementById('points2').value;
    var p3 = document.getElementById('points3').value;
    var p4 = document.getElementById('points4').value;
    var p5 = document.getElementById('points5').value;
    var p6 = document.getElementById('points6').value;
    var p7 = document.getElementById('points7').value;
    var p8 = document.getElementById('points8').value;
    var p9 = document.getElementById('points9').value;
    document.getElementById('total').value=parseInt(p0,10)+parseInt(p1,10)+parseInt(p2,10)+parseInt(p3,10)+parseInt(p4,10)+parseInt(p5,10)+parseInt(p6,10)+parseInt(p7,10)+parseInt(p8,10)+parseInt(p9,10);
    //même souci avec : document.getElementById('total').value=parseInt(p0)+parseInt(p1)+parseInt(p2)+parseInt(p3)+parseInt(p4)+parseInt(p5)+parseInt(p6)+parseInt(p7)+parseInt(p8)+parseInt(p9);
     
    } 
     
    </script>
     
    <select name="points[0]" id="points0" onChange="totalite();">
                                <option  >0</option>
                                <option  >1</option>
                                <option  >2</option>
                                <option  >3</option>
                                <option  >4</option>
                                <option  >5</option>
                              </select>
     
    //idem pour les 9 autres selects : id="points1",  id="points2", etc... 
     
    <input name="total" type="text" id="total" size="3" readonly="readonly">
    Une idée svp ?

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var p0 = document.getElementById('points0').options[0].value;
    ...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 40
    Points
    40
    Par défaut
    Cool, merci, comme ça, ça ne marche ni sur l'un ni sur l'autre...

    Hum, une autre idée dans la manche ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 40
    Points
    40
    Par défaut
    J'ai fini par trouver ! Il ne fallait pas miser sur :

    mais sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <option value="0">0</option>
    Fut un temps où cela fonctionnait il me semble, mais bon...

    A+

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut addition javascript
    Question de débutant : je voudrais faire une addition ; j'ai vu qu'il fallait utiliser la fonction parseInt(), mais même avec celle-ci, il me concatène les 2 variables ; quelle est l'explication ? Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    total=19;
    total=parseInt(total,10)+parseInt(form.total_npn.value,10);
    total=parseInt(total,10)+parseInt(form.total_npa.value,10);
    form.total.value=total;

  9. #9
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Pourquoi faire un parseInt(total), alors que total est déjà une valeur ?
    Et tu n'est pas obligé de préciser "10", le système sera décimal par défaut (et ... c'est pas plus mal ainsi ! ). Enfin, sauf si tu l'as fait exprès, l'accès au formulaire est précédé du document:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    total=19;
    total = total + parseInt(document.form.total_npn.value);
    total = total + parseInt(document.form.total_npa.value);
    document.form.total.value=total;
    Et tu peux remplacer tes total = total + ... par total += ...

    ERE

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 40
    Points
    40
    Par défaut
    Ceci dit, même si le script peut être optimisé, il fonctionne tel quel. Je suis allé au bout de l'exemple pour pouvoir le tester à travers une fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <script language="javascript" type="text/javascript">
    function cocos(form)
    {
    total=19;
    total=parseInt(total,10)+parseInt(form.total_npn.value,10);
    total=parseInt(total,10)+parseInt(form.total_npa.value,10);
    form.total.value=total;
    }
    </script>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form name="form" method="post" action="">
      <input name="total_npn" type="text" id="total_npn" value="22">
      <input name="total_npa" type="text" id="total_npa" value="34">
      <input type="text" name="total" id="total">
      <input name="cocof" type="button" value="Go" onClick="cocos(this.form);">
    </form>

  11. #11
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Sûr.
    Si l'objectif c'est de faire un test ou un exercice de style alors ok, c'est fonctionnel. Sinon ...

    ERE

  12. #12
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    je n'arrive pas à trouver la logique du comportement actuel, mais je voudrais qu'à chaque fois que l'utilisateur modifie un champ de son formulaire, ça mette à jour le total.
    Pour se faire, j'ai des champs de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <input size="2" maxlength="10"
     value="" name="q_npn" id="q_npn"  type="text" onkeyup="calc_total_npn(this.form)">
    avec la fontion js suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function calc_total_npn(form) {
    document.form.total_npn.value=document.form.q_npn.value*document.form.px_npn.value;
    total+=parseFloat(document.form.total_npn.value);
    document.form.total.value=total;
    }
    et au lieu de m'afficher le total, ça m'affiche d'abord le double, puis si j'efface le champ et que je remet la valeur, ça m'incrémente de nouveau le total du double du total intermédiaire (en début de script, la variable "total" est initialisée à 0). Je précise que le total intermédiaire (ici "document.form.total_npn.value") est correct. Où est mon bug ?

  13. #13
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut
    Ce que je souhaite faire est visible par exemple sur cet exemple (cliquer sur "Calculer le prix...") et je n'en suis pas très loin, mais je sèche...

  14. #14
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Et comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ....
    var q_npn = document.form.q_npn.value * 1;
    var px_npn = document.form.px_npn.value * 1;
    ....
    Et là, tu fais tes calculs à partir des variables
    .....

  15. #15
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    et au lieu de m'afficher le total, ça m'affiche d'abord le double, puis si j'efface le champ et que je remet la valeur, ça m'incrémente de nouveau le total du double du total intermédiaire (en début de script, la variable "total" est initialisée à 0)
    total+=parseFloat(document.form.total_npn.value);

  16. #16
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut
    Non, ça ne marche toujours pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function calc_total_npn(form) {
    var q_npn = document.form.q_npn.value * 1;
    var px_npn = document.form.px_npn.value * 1;
    document.form.total_npn.value=q_npn*px_npn;
    total+=parseFloat(document.form.total_npn.value); 
    document.form.total.value=total;
    }

  17. #17
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Tu veux tester ça et nous dire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function calc_total_npn(form) {
    var q_npn = document.form.q_npn.value * 1;
    var px_npn = document.form.px_npn.value * 1;
    var total = q_npn + px_npn;
    alert(total);

  18. #18
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par emmanuel.remy Voir le message
    Et tu n'est pas obligé de préciser "10", le système sera décimal par défaut
    Petit rectificatif :
    il faut préciser le "10".
    Le système devrait être décimal par défaut, mais hélas ce n'est pas le cas

    Suivant le premier caractère de la valeur à convertir, elle est dans certains cas interprétée en octale : il s'agit d'un bug.
    Et après coup, ce n'est pas évident à déceler (certaines capillarités s'en souviennent encore ).
    Il faut donc préciser la base "10" dans les différentes fonctions mathématiques (parseInt(), parseFloat() etc.) sous peine de surprises ...

    A+

  19. #19
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 430
    Points : 5 784
    Points
    5 784
    Billets dans le blog
    1
    Par défaut
    Après pas mal de galères (inutile de préciser), j'ai pû faire le test, mais je me suis aperçu que ton + devait être en fait un *. Donc, je l'ai changé, et le calcul est bon (mais il l'était déjà, vu que c'est un sous-total et que seul le total global est faux)...

    C'est une réponse à pc75, pas à E.Bzz

  20. #20
    Inactif
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 117
    Points : 142
    Points
    142
    Par défaut
    Citation Envoyé par emmanuel.remy Voir le message
    Salut,

    Pourquoi faire un parseInt(total), alors que total est déjà une valeur ?
    Et tu n'est pas obligé de préciser "10", le système sera décimal par défaut
    NON et encore NON, parseInt('08'), te reverra 0, il faut obligatoirement passer la base en paramètre, car ce n'est pas par défaut la base décimale, mais en fonction de la tête de la string, s'il voit 0 en premier il renvoit de l'octal par exemple.
    parseInt('010') -> 8

    et un conseil, il faut faire valider son code avec jslint et suivre les recommandations de l'outil. cela évite bien des soucis

Discussions similaires

  1. Addition en JavaScript
    Par bilcosby dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 15/12/2012, 11h15
  2. Aide Addition JavaScript
    Par Energy7 dans le forum Général Java
    Réponses: 2
    Dernier message: 09/12/2011, 14h59
  3. Addition de 3 champs en javascript
    Par loan33 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/12/2010, 14h08
  4. Afficher le resultat d'une addition de values en javascript
    Par vbnetnet dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/02/2010, 13h29
  5. addition en javascript
    Par mimagyc dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/05/2008, 09h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo