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 :

Tableau de prix : addition


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut Tableau de prix : addition
    Bonjour,

    je suis novice en JavaScript.
    J'ai un tableau qui comporte des prix et sur ma page, j'ai des input de type "number". Les input se nomment "number1", "number2"...
    Les prix des number sont stockés dans mon tableau ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    carte = new Array(11.50, 16.50, 12.50, 10.50);
    j'accède sans problème à mes prix et peux les additionner en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    total = parseFloat(carte[1]) + parseFloat(carte[2]);
    Je parcours avec une boucle for mon formulaire pour voir quels sont les champs de type "number" qui ont une valeur > 0.
    Puis je vais cherche le prix du "number" correspondant dans mon tableau et souhaite additionner les prix des différents qui ont une valeur > 0 et les stocke dans une variable total.
    C'est là que cela ne fonctionne plus. J'ai soit NAN ou undefined.
    Voici ma boucle ou j'additionne les prix
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for(var Indice =1; Indice <= 3; Indice++){
    if(document.getElementById('number' + Indice).value > 0){
     total = total + parseFloat(carte[Indice - 1]);
    }
    }
    Quelqu'un aurait-il une idée.

    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 171
    Points
    17 171
    Par défaut
    Salut

    Ton array carte = new Array(11.50, 16.50, 12.50, 10.50); contient 4 éléments d'indice 0 à 3.
    Ta variable Indice =1; Indice <= 16 prend pour valeur 1 à 16.
    Tu affectes/calcules total = total + parseFloat(carte[Indice - 1]);, alors que l'on a vue que ton array carte lui n'allait pas au delà de 3.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    Bonjour ProgElect,

    merci pour ta réponse.
    En fait mon tableau contient 16 prix mais ici pour l'exemple j'en ai mis que 3 mais je n'ai pas adapté ma boucle for. En effet l'indice max de ma boucle est bien également à mon max tableau.

    Ceci dit le problème n'est pas là je pense.

    C'est corrigé... comme ça pas de confusion

  4. #4
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    Problème finalement résolu en faisant ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     for(var Indice = 1; Indice <= 16; Indice++){
          if(document.getElementById('number'+ Indice).value > 0){
             console.log('number'+Indice);
             total = parseFloat(total) + (parseFloat(carte[Indice-1] * document.getElementById('number'+ Indice).value));
          }
       }
    Merci pour votre aide

  5. #5
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Tu es sûr que cela fonctionne ? Je vois que tu utilises un coup Indice-1 et un coup Indice.

    Tu pourrais économiser plusieurs soustractions en faisant commencer ta boucle à l'indice 0.
    La fonction parseFloat() n'est pas utile puisque que le tableau carte contient déjà des float par contre dans if(document.getElementById('number'+ Indice).value > 0) tu compares une string au nombre 0...
    Tu pourrais optimiser en utilisant une class mais sinon tu peux au moins mettre +document.getElementById('number'+ Indice).value (avec un "+" pour convertir en nombre) dans une variable car tu l'utilises plusieurs fois...

    La variable "total" n'est pas déclarée...

  6. #6
    Membre régulier
    Profil pro
    IT Développeur
    Inscrit en
    Mars 2009
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Développeur

    Informations forums :
    Inscription : Mars 2009
    Messages : 274
    Points : 96
    Points
    96
    Par défaut
    Bonjour Beginner.,

    merci pour tes conseils. En fait je commence à 1 parce que ma liste de plats commence à 1, mais c'est vrai que je peux simplifier en commençant à 0. C'est corrigé.

    Effectivement en supprimant le parseFloat cela fonctionne aussi. J'avais lu que si on ne l'utilise pas, il prend le nombre comme un string.

    Merci pour ton aide

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

Discussions similaires

  1. Récupération tableau de prix
    Par lamouch dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/03/2018, 13h49
  2. Prix moyen dans un tableau croisé
    Par titi84 dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 15/04/2008, 16h41
  3. calcul de prix apres addition de TVA
    Par ismailsrt4400 dans le forum Excel
    Réponses: 4
    Dernier message: 11/03/2008, 18h07
  4. Calcul de prix tableau dynamique
    Par Scandisk dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 06/03/2008, 16h56
  5. [68k] Addition des 50 premières valeurs d'un tableau
    Par mortalius dans le forum Autres architectures
    Réponses: 2
    Dernier message: 01/12/2005, 14h43

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