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 :

addition avec input


Sujet :

JavaScript

  1. #1
    Membre confirmé Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Par défaut addition avec input
    Bonjour,

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
       ttProd = 3;
       //Calcul du total de la commande
       var totalCommande = 0;
       for(x=0;x<ttProd;x++) {
          total_num = 'total_'+ x; //Récup le contenu de mon champ de formulaire
          var totalProd = document.getElementById(total_num).value;
          totalCommande = totalCommande+totalProd;
       }
    cela m'affiche : 020 et non pas 20 ( qui est le résultat de 0+20)

    PS: total_num sont des input type="text"

    Ma question pourquoi je n'ai pas le résultat de 0+20 = 20 et 020 qui s'affiche ?

    Merci.

  2. #2
    Expert éminent

    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
    Par défaut
    Bonjour,
    Citation Envoyé par M1000 Voir le message
    Ma question pourquoi je n'ai pas le résultat de 0+20 = 20 et 020 qui s'affiche ?
    parce que les .value sont de type caractère pas défaut, et que pour du caractère, le signe "+" représente la concaténation ...
    parseInt() permet de convertire du texte en integer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var totalProd = parseInt(document.getElementById(total_num).value, 10);
    A+

  3. #3
    Expert éminent

    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
    Par défaut
    ... ceci dit, il faut sortir la déclaration de ta boucle (var total_prod = ...).
    Sinon, multidéclaration

    A+

  4. #4
    Membre confirmé Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Par défaut
    Quand je remplace cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var totalProd = document.getElementById(total_num).value;
    par cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var totalProd = parseInt(document.getElementById(total_num).value, 10);
    j'obtiens un NaN c'est ce que tu voulias dire en sortant ma déclaration de la boucle ? mais comment la sortir sachant que j'en ais besoin dans la boucle ?

    Merci

  5. #5
    Expert éminent

    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
       ttProd = 3;
    var totalProd = 0;
    var LaValeur;
       //Calcul du total de la commande
       var totalCommande = 0;
       for(x=0;x<ttProd;x++) {
          total_num = 'total_'+ x; //Récup le contenu de mon champ de formulaire
          LaValeur = document.getElementById(total_num).value;
          LaValeur = (isNaN(LaValeur))?"0":LaValeur;
          totalProd = parseInt(LaValeur, 10);
          totalCommande = totalCommande+totalProd;
       }
    isNaN = is Not a Number
    A toi d'ajouter un contrôle de saisie pour n'autoriser que des valeurs numériques ...

    A+

  6. #6
    Membre confirmé Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Par défaut
    Je dois avoir du mal mais j'ai tjrs un NaN lorsque je souhaite afficher ce dernier comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById("total").value = totalCommande;

  7. #7
    Expert éminent

    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
    Par défaut
    Peux-tu faire un copié/collé de la version actuelle de ton code ?

    A+

  8. #8
    Membre confirmé Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Par défaut
    Mon script :

    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
     
    <script language="javascript">
    function caculLgPrice(prix, nbre, numProd, ttProd) {
       priceTTLg = prix*nbre;
       total_numProd = 'total_'+numProd;
       document.getElementById(total_numProd).value = priceTTLg;
     
       //Calcul du total de la commande
      var totalProd = 0;
      var LaValeur;
       //Calcul du total de la commande
       var totalCommande = 0;
       for(x=0;x<ttProd;x++) {
          total_num = 'total_'+ x; //Récup le contenu de mon champ de formulaire
          LaValeur = document.getElementById(total_num).value;
          LaValeur = (isNaN(LaValeur))?"0":LaValeur;
          totalProd = parseInt(LaValeur, 10);
          totalCommande = totalCommande+totalProd;
       }
      document.getElementById("total").value = totalCommande;
    }
    </script>
    Mon HTML/PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    echo '<form id="commande" enctype="multipart/form-data" method="post" autocomplete="off">';
    echo '<div id="product_unid"><input type="text" name="unid_'.$prod.'" value="1" onChange="caculLgPrice('.$price.', this.value, '.$prod.', '.$nbreProd.' )"/></div>';
    echo '<div id="product_bonif"><input type="text" name="bonif_'.$prod.'" id="bonif_'.$prod.'" value="" readonly /></div>';
    echo '<div id="product_total"><input type="text" name="total_'.$prod.'" id="total_'.$prod.'" value="" readonly /></div>';
    echo '</form>';

  9. #9
    Expert éminent

    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
    Par défaut
    tes paramètres sont aussi de type string : à convertir avant de les traiter en numérique

    A+

  10. #10
    Membre confirmé Avatar de M1000
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Novembre 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2003
    Messages : 201
    Par défaut
    C'est la que tu te dis qu'il faut songer à dormir la nuit

    Merci de l'aide c'est une affaire résolu !!!!


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb addition avec valeur NULL
    Par major2 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 14/03/2006, 15h33
  2. Problème lors de la lecture d'un fichier avec Input...
    Par Kronoob dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 18/11/2005, 18h55
  3. aperçu d image avec input type file marche pas dans ffx
    Par siddh dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/11/2005, 09h11
  4. [Debutant] Pb avec input file
    Par chpog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/09/2005, 15h16
  5. Addition avec terme NULL
    Par blackfelix dans le forum Langage SQL
    Réponses: 3
    Dernier message: 22/10/2004, 08h53

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