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 :

[DOM] Tableau de calcul en javascript


Sujet :

JavaScript

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 121
    Points : 44
    Points
    44
    Par défaut [DOM] Tableau de calcul en javascript
    Bonjour,

    j'ai besoin de vos lumières pour un exercice :

    Je souhaiterais faire un tableau où on aurait un produit (avec un prix et un poids défini dans deux colonnes distinctes), on choisit la quantité dans une autre colonne et dans les deux dernières on y trouve le poids total et le prix total (suivant la quantité choisie).

    Je me sers de la formule suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <head>
    <script language="javascript"> 
    function popbs() { window.document.formulaire.ptpb.value = document.formulaire.popb.value * 370 ; } 
    function prpbs() { window.document.formulaire.prtpb.value = document.formulaire.popb.value * 6 ; }
    </script> 
    </head>
    <body>
        <td align="center"><input type="text" name="popb" size="3" onkeyup="popbs()"> </td>
        <td align="center"><input type="text" name="ptpb" size="8" disabled="disabled" > g</td>
        <td align="center"><input type="text" name="prtpb" size="8" disabled="disabled" > g</td>
    </body>
    J'arrive à faire le premier calcul : celui qui fait : quantitéx370g = poids total
    Mais impossible de faire l'autre. En fait, c'est que je n'arrive pas à combiner deux fonctions pour un formulaire : quand je les mets séprament ça va... Comment faire en sorte que la case pour la quantité soit utilisée pour deux calculs ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    bonjour,

    La valeur contenue dans un input (quel qu'il soit) ou un textarea est une chaine de caractères. Donc il faut transformer cette chaine en nombre en utilisant parseInt() ou parseFloat() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.formulaire.ptpb.value = parseFloat(document.formulaire.popb.value) * 370 ;

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    il sera aussi plus élégant (et crossbrowser) d'utiliser une syntaxe plus correcte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms['formulaire'].elements['ptpb'].value
    n'oublie pas de preciser également la base du parse (par defaut sous IE par exemple elle est à 8)
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    [QUOTE=SpaceFrog;4119782]il sera aussi plus élégant (et crossbrowser) d'utiliser une syntaxe plus correcte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms['formulaire'].elements['ptpb'].value
    ou document.getElementById() ;=

    Citation Envoyé par SpaceFrog Voir le message
    n'oublie pas de preciser également la base du parse (par defaut sous IE par exemple elle est à 8)
    IE travaille en base 8 . J'aurai appris quelque chose
    Maintenant si mariepierre utilise parseFloat() je ne pense pas qu'il faille préciser la base

  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
    Citation Envoyé par SpaceFrog Voir le message
    (par defaut sous IE par exemple elle est à 8)
    Uniquement si le chiffre en question commence par 0 il me semble ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 121
    Points : 44
    Points
    44
    Par défaut
    merci pour vos réponses, cependant cela ne marche toujours pas :

    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
     
     
    function popbs() { window.document.formulaire.ptpb.value = parseFloat(document.formulaire.popb.value) * 370 ; } 
    function prpbs() { window.document.formulaire.prtpb.value = document.formulaire.popb.value * 6 ; }
     
     
    <tr bgcolor="#f6f1e0">
        <td><img src=" "></td>
        <td><strong>Petit brebis</strong></td>
        <td align="center">370g</td>
        <td align="center">6,00 €</td>
        <td align="center"><input type="text" name="popb" size="3" onkeyup="popbs()" onKeyUp="prpbs()"> </td>
        <td align="center"><input type="text" name="ptpb" size="8" disabled="disabled" onkeyup="pts()" > g</td>
        <td align="center"><input type="text" name="prtpb" size="8" disabled="disabled" > euros</td>
      </tr>
    C'est au niveau de la gestion de deux fonctions non qu'il y a un problème ?

  7. #7
    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
    <td align="center"><input type="text" name="popb" size="3" onkeyup="popbs();prpbs()"> </td>
    si tu mets 2 fois onkeyup, le 2e annule le 1er
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 121
    Points : 44
    Points
    44
    Par défaut
    oui ça je m'en doute mais c'est pour vous montrer qu'il faut que cette case "appelle 2 fonctions".
    Elle doit servir pour calculer le poids total et le prix total...
    J'ai essayé le et "and", "&" mais ça ne marche pas

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    aller je te fais cadeau d'un point virgule ... tiens ;
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    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
    Citation Envoyé par SpaceFrog Voir le message
    aller je te fais cadeau d'un point virgule ... tiens ;
    Ah... comme dans la ligne que j'ai proposée ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 121
    Points : 44
    Points
    44
    Par défaut
    quelle idiote.....
    excusez moi, j'étais tellement démoralisée....
    j'essaie et je vous tiens au courant !
    Merci

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 121
    Points : 44
    Points
    44
    Par défaut
    re moi...

    pas besoin de vous dire que ça marche, vous vous en doutiez...

    mais maintenant j'ai un autre soucis... :
    donc j'obtiens un poids total par rapport à la quantité et pareil pour le prix.
    Maintenant, j'aimerais que tous les "poids total" s'ajoutent pour obtenir un poids final.
    j'ai essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function pts() { window.document.formulaire.pt.value = parseFloat(document.formulaire.ptpb.value) + parseFloat(document.formulaire.ptt.value) + parseFloat(document.formulaire.ptc.value) + parseFloat(document.formulaire.ptpf.value) + parseFloat(document.formulaire.ptbp.value) + parseFloat(document.formulaire.ptbf.value); } 
     
     
    <!-- UNE DES CASES OBTENANT UN POIDS TOTAL -->
    <input type="text" name="ptbf" size="8" disabled="disabled" onkeyup="pts()">
     
     
    <!-- LA CASE FINAL DU POIDS FINAL -->
    <input type="text" name="pt" size="8" disabled="disabled" >
    inutile de vous dire que ça ne marche pas....
    où est mon erreur ?

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    disabled et onkeyup ne font pas bon ménage ?
    essaye readonly à la place
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 121
    Points : 44
    Points
    44
    Par défaut
    readonly à la place de disabled ne marche pas non plus.

    Est-ce que ce ne serait pas un problème de réappropriation des données fournies automatiquement ? = Est-ce que le problème ne vient pas du fait que je demande un calcul automatique avec comme coefficient des résultats d'autres calculs auto ?

  15. #15
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    je te renvoie à cette intervention:
    http://www.developpez.net/forums/d70...t/#post4119873
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 121
    Points : 44
    Points
    44
    Par défaut
    donc il faut que je mette :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.forms['formulaire'].elements['ptpb'].value
    ça donnerait ça par exemple?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function pts() { window.document.formulaire.pt.value = document.forms['formulaire'].elements['ptpb'].value * 20; }

  17. #17
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    là aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.document.formulaire.pt.value
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 121
    Points : 44
    Points
    44
    Par défaut
    donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    document.forms['formulaire'].elements['pt'].value = document.forms['formulaire'].elements['ptpb'].value * 20; }
    c'est ça ?

  19. #19
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    si tu n'as qu'un seul pts sur la page .. oui

    sinon passe par les id
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 121
    Points : 44
    Points
    44
    Par défaut
    ça ne marche pas.

    je mets comme fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    function pts() { document.forms['formulaire'].elements['pt'].value = document.forms['formulaire'].elements['ptbf'].value * 20;
    donc je dis pour tester que le formulaire nommé pt doit prendre la valeur du formulaire (résultat d'un calcul automatique) nommé ptbf. C'est bien ça ?

    et après voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    <td align="center"><input type="text" name="ptbf" size="8" disabled="ReadOnly" onkeyup="pts()"> g</td>
    <td align="center" bgcolor="#CCFF99"><input type="text" name="pt" size="8" disabled="disabled" > g</td>
    où est mon erreur, je ne comprends pas là....

Discussions similaires

  1. petit calcul en Javascript
    Par Dream Time dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/03/2007, 02h07
  2. [DOM] tableau et javascript
    Par franfr57 dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 20/12/2006, 16h46
  3. Passer un tableau de VbScript vers Javascript
    Par Poussy-Puce dans le forum ASP
    Réponses: 1
    Dernier message: 03/03/2006, 12h07
  4. Réponses: 10
    Dernier message: 19/01/2006, 06h41
  5. Tableau et calculs
    Par isak dans le forum Composants
    Réponses: 1
    Dernier message: 30/06/2005, 10h33

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