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 :

Fonction calcul et récupération du resultat dans une autre fonction


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut Fonction calcul et récupération du resultat dans une autre fonction
    Hello,

    Voilà, je tente actuellement d'ajouter quelques fonctions dans une page html servant de "boutique" simplifiée. Le site en question est assez ancien et très vaste, donc obligé de faire avec les moyens du bord, c'est à dire ajouter quelques fonctions JS.

    Mon but :
    - Afficher un sous total pour chaque article, selon la quantité voulue (choix de quantité via menu déroulant)
    - Afficher un total reprenant tous les sous totaux.

    Pour les sous totaux, ca roule, par contre, impossible de réussir à resortir un total complet au final. Il faudrait que je réussisse à récuperer les sous totaux pour les additioner.

    Voici les fonctions que j'utilise, les 5 premières (calculx) sont les sous totaux qui s'executent à chaque choix dans le menu déroulant, la dernière (total) est ma tentative de total qui doit s'executer lors du clic sur un bouton.

    Une idée de ce qui cloche ? Je pense que je m'y prend carrément mal pour la fonction du total :/

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <script language="javascript">
    function calcula(quantitea,prixa,totala)
    { 
    x=document.getElementById(quantitea);q=(1*x.value); 
    x=document.getElementById(prixa);p=7; 
     
    ra=(q*(0+p)); 
    x=document.getElementById(totala);x.value=ra; 
    }
     
    function calculb(quantiteb,prixb,totalb)
    { 
    x=document.getElementById(quantiteb);q=(1*x.value); 
    x=document.getElementById(prixb);p=7;
     
    rb=(q*(0+p));
    x=document.getElementById(totalb);x.value=rb; 
    }
     
    function calculc(quantitec,prixc,totalc)
    { 
    x=document.getElementById(quantitec);q=(1*x.value); 
    x=document.getElementById(prixc);p=28; 
    rc=(q*(0+p));
    x=document.getElementById(totalc);x.value=rc; 
    }
     
    function calculd(quantited,prixd,totald)
    { 
    x=document.getElementById(quantited);q=(1*x.value); 
    x=document.getElementById(prixd);p=10; 
    rd=(q*(0+p)); 
    x=document.getElementById(totald);x.value=rd; 
    }
     
    function calcule(quantitee,prixe,totale)
    { 
    x=document.getElementById(quantitee);q=(1*x.value); 
    x=document.getElementById(prixe);p=29; 
    re=(q*(0+p)); 
    x=document.getElementById(totale);x.value=re; 
    }
     
     
    function totalX(totala,totalb,totalc,totald,totale,totalz)
    { 
    x=document.getElementById(totala);x.value=ra; 
    x=document.getElementById(totalb);x.value=rb; 
    x=document.getElementById(totalc);x.value=rc; 
    x=document.getElementById(totald);x.value=rd; 
    x=document.getElementById(totale);x.value=re; 
    rz=(0+ra+rb+rc+rd+re); 
     
    x=document.getElementById(totalz);x.value=rz; 
    }
     
     
    </script>
    Et voici un apercu de l'html qu'il y a devant pour les sous totaux :

    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
    	<TD ALIGN=CENTER VALIGN=TOP><FONT SIZE=1>Indiquez la quantité souhaitée<BR><select name="quantitee" id="quantitee" onChange="calcule('quantitee','prixe','totale') ; ">
    <option value="0" selected></option>
    <option value="1">1 exemplaire</option>
    <option value="2">2 exemplaires</option>
    <option value="3">3 exemplaires</option>
    <option value="4">4 exemplaires</option>
    <option value="5">5 exemplaires</option>
    <option value="6">6 exemplaires</option>
    <option value="7">7 exemplaires</option>
    <option value="8">8 exemplaires</option>
    <option value="9">9 exemplaires</option>
    <option value="10">10 exemplaires</option>
    </select>
    <br>
    <input id="totale" type="text" name="totale" readonly="true" SIZE=8 MAXLENGTH=8> €</TD>		
    		<TD ALIGN=RIGHT VALIGN=TOP><FONT SIZE=2><B>€</B> 29,00</TD>
    Et voici le HTML concernant le total final (qui ne tourne pas) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <B>Total de la commande :</B> <input id="totalz" type="text" name="totalz" readonly="true" SIZE=12 MAXLENGTH=12> €  
    <INPUT TYPE="button" VALUE="Calculer" onClick="totalX('totala','totalb','totalc','totald','totale','totalz')">

    Merci d'avance à ceux qui s'y pencheront !

  2. #2
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Salut,

    Ce ne serait pas plutôt quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function totalX(totala,totalb,totalc,totald,totale,totalz)
    { 
    var ra = document.getElementById(totala).value,
    rb = document.getElementById(totalb).value,
    rc = document.getElementById(totalc).value, 
    rd = document.getElementById(totald).value, 
    re = document.getElementById(totale).value; 
     
    x=document.getElementById(totalz).value = ra+rb+rc+rd+re; 
    }
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Haaaa y'a du mieux en tout cas, de cette facon il récupere bien els valeurs !!
    Merci !

    par contre, là il ne les additionne pas, il les ajoute l'une derriere l'autre :/
    Du genre j'ai des sous totaux 7+21+21+14
    Et il me ressort 7212114 comme résultat.

    Ai-je oublier une ligne pour convertir en numérique ?
    Ou faute de syntaxe pour qu'il calcul au lieu de simplement ajouter en suivant ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    il faut parser les valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    rb = parseInt(document.getElementById(totalb).value)
    rc =  parseInt(document.getElementById(totalc).value)
    rd =  parseInt(document.getElementById(totald).value)
    re =  parseInt(document.getElementById(totale).value)

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Oki Doki, j'ai testé avec le parse comme tu le proposais, résultat : NaN

    j'ai ajouté le parse sur la dernière ligne au cas où : Plus aucun résultat.

    On s'approche du but je le sens mais c'est pas encore ca :p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function totalX(totala,totalb,totalc,totald,totale,totalz)
    { 
    var ra = parseInt(document.getElementById(totala).value);
    rb = parseInt(document.getElementById(totalb).value);
    rc =  parseInt(document.getElementById(totalc).value);
    rd =  parseInt(document.getElementById(totald).value);
    re =  parseInt(document.getElementById(totale).value);
     
     
    x=parseInt(document.getElementById(totalz).value) = ra+rb+rc+rd+re; 
    }

  6. #6
    Invité
    Invité(e)
    Par défaut
    la derniere ligne aussi ne va pas la variable x ne sert a rien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(totalz).value = ra+rb+rc+rd+re;

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Alors je viens de tester comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function totalX(totala,totalb,totalc,totald,totale,totalz)
    { 
    var ra = parseInt(document.getElementById(totala).value);
    rb = parseInt(document.getElementById(totalb).value);
    rc =  parseInt(document.getElementById(totalc).value);
    rd =  parseInt(document.getElementById(totald).value);
    re =  parseInt(document.getElementById(totale).value);
     
    document.getElementById(totalz).value = ra+rb+rc+rd+re;
    }
    et comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    parseInt(document.getElementById(totalz).value) = ra+rb+rc+rd+re;
    Tjs pas de résultat :/ ou bien j'ai un NaN ou bien rien du tout

  8. #8
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(totalz).value = parseInt(ra+rb+rc+rd+re);
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    +1
    NaN


  10. #10
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    J'ai modifié ma réponse, il faut aussi réfléchir par toi-même et pas juste copier/coller nos réponses en répondant instantanément!

    Si tu veux qu'on réponde précisément à ta question donne nous un code simplifié directement exécutable avec code html et javascript dans le même document. Je n'ai pas envi de me retaper tout un document html pour répondre à ta question.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Sorry, j'ai testé directement tel quel vu que c'etait un simple ajout de parse.

    Et je tente chaque fois de trouver la bonne ligne moi même, mais je pense que je dois avoir de mauvaise notions sur ce type de fonctions (d'où le fait que je demande votre aide :p )

    Donc voilà je vous ai fait une ptite page les articles pour dire d'y voir plus clair comme demandé :

    Merci encore pour votre temps et vos avis !

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    <HTML>
    <HEAD>
     
    <script language="javascript">
    function calcula(quantitea,prixa,totala)
    { 
    x=document.getElementById(quantitea);q=(1*x.value); 
    x=document.getElementById(prixa);p=7; 
     
    ra=(q*(0+p)); 
    x=document.getElementById(totala);x.value=ra; 
    }
     
    function calculb(quantiteb,prixb,totalb)
    { 
    x=document.getElementById(quantiteb);q=(1*x.value); 
    x=document.getElementById(prixb);p=7;
     
    rb=(q*(0+p));
    x=document.getElementById(totalb);x.value=rb; 
    }
     
    function calculc(quantitec,prixc,totalc)
    { 
    x=document.getElementById(quantitec);q=(1*x.value); 
    x=document.getElementById(prixc);p=28; 
    rc=(q*(0+p));
    x=document.getElementById(totalc);x.value=rc; 
    }
     
    function calculd(quantited,prixd,totald)
    { 
    x=document.getElementById(quantited);q=(1*x.value); 
    x=document.getElementById(prixd);p=10; 
    rd=(q*(0+p)); 
    x=document.getElementById(totald);x.value=rd; 
    }
     
    function calcule(quantitee,prixe,totale)
    { 
    x=document.getElementById(quantitee);q=(1*x.value); 
    x=document.getElementById(prixe);p=29; 
    re=(q*(0+p)); 
    x=document.getElementById(totale);x.value=re; 
    }
     
     
    function totalX(totala,totalb,totalc,totald,totale,totalz)
    { 
    var ra = parseInt(document.getElementById(totala).value);
    rb = parseInt(document.getElementById(totalb).value);
    rc =  parseInt(document.getElementById(totalc).value);
    rd =  parseInt(document.getElementById(totald).value);
    re =  parseInt(document.getElementById(totale).value);
     
     
    document.getElementById(totalz).value = parseInt(ra+rb+rc+rd+re);
     
     
    }
     
     
    </script>
     
    </HEAD>
     
    <BODY>
     
     
    <h1> TEST </h1>
     
     
    <h2> Article a </h2>
     
    <TR>
    <TD ALIGN=CENTER VALIGN=TOP><FONT SIZE=1>Indiquez la quantité souhaitée<BR><select name="quantitea" id="quantitea" onChange="calcula('quantitea','prixa','totala')">
    <option value="0" selected></option>
    <option value="1">1 exemplaire</option>
    <option value="2">2 exemplaires</option>
    <option value="3">3 exemplaires</option>
    <option value="4">4 exemplaires</option>
    <option value="5">5 exemplaires</option>
    <option value="6">6 exemplaires</option>
    <option value="7">7 exemplaires</option>
    <option value="8">8 exemplaires</option>
    <option value="9">9 exemplaires</option>
    <option value="10">10 exemplaires</option>
    </select> <B>€</B> 7,00
    <br>
    <br>
    <input id="totala" type="text" name="totala" readonly="true" SIZE=8 MAXLENGTH=8> €
    </TD>		
    		<TD ALIGN=RIGHT VALIGN=TOP><FONT SIZE=2></TD>
    	</TR>
     
    <h2> Article b </h2>
     
    <TR>
     
    		<TD ALIGN=CENTER VALIGN=TOP><FONT SIZE=1>Indiquez la quantité souhaitée<BR><select name="quantiteb" id="quantiteb" onChange="calculb('quantiteb','prixb','totalb')">
    <option value="0" selected></option>
    <option value="1">1 exemplaire</option>
    <option value="2">2 exemplaires</option>
    <option value="3">3 exemplaires</option>
    <option value="4">4 exemplaires</option>
    <option value="5">5 exemplaires</option>
    <option value="6">6 exemplaires</option>
    <option value="7">7 exemplaires</option>
    <option value="8">8 exemplaires</option>
    <option value="9">9 exemplaires</option>
    <option value="10">10 exemplaires</option>
    </select> <B>€</B> 7,00
    <br>
    <br>
     
     
     
    <input id="totalb" type="text" name="totalb" readonly="true" SIZE=8 MAXLENGTH=8> €
    </TD>		
    		<TD ALIGN=RIGHT VALIGN=TOP><FONT SIZE=2></TD>
    	</TR>
     
     
    <h2> Article c </h2>
     
    <TR>
    <TD ALIGN=CENTER VALIGN=TOP><FONT SIZE=1>Indiquez la quantité souhaitée<BR><select name="quantitec" id="quantitec" onChange="calculc('quantitec','prixc','totalc')">
    <option value="0" selected></option>
    <option value="1">1 exemplaire</option>
    <option value="2">2 exemplaires</option>
    <option value="3">3 exemplaires</option>
    <option value="4">4 exemplaires</option>
    <option value="5">5 exemplaires</option>
    <option value="6">6 exemplaires</option>
    <option value="7">7 exemplaires</option>
    <option value="8">8 exemplaires</option>
    <option value="9">9 exemplaires</option>
    <option value="10">10 exemplaires</option>
    </select> <B>€</B> 28,00
    <br>
    <br>
    <input id="totalc" type="text" name="totalc" readonly="true" SIZE=8 MAXLENGTH=8> €
    </TD>		
    		<TD ALIGN=RIGHT VALIGN=TOP><FONT SIZE=2></TD>
    	</TR>
     
     
    <h2> Article d </h2>
     
    <TR>
    <TD ALIGN=CENTER VALIGN=TOP><FONT SIZE=1>Indiquez la quantité souhaitée<BR><select name="quantited" id="quantited" onChange="calculd('quantited','prixd','totald')">
    <option value="0" selected></option>
    <option value="1">1 exemplaire</option>
    <option value="2">2 exemplaires</option>
    <option value="3">3 exemplaires</option>
    <option value="4">4 exemplaires</option>
    <option value="5">5 exemplaires</option>
    <option value="6">6 exemplaires</option>
    <option value="7">7 exemplaires</option>
    <option value="8">8 exemplaires</option>
    <option value="9">9 exemplaires</option>
    <option value="10">10 exemplaires</option>
    </select> <B>€</B> 10,00
    <br>
    <br>
    <input id="totald" type="text" name="totald" readonly="true" SIZE=8 MAXLENGTH=8> €
    </TD>		
    		<TD ALIGN=RIGHT VALIGN=TOP><FONT SIZE=2></TD>
    	</TR>
     
     
    <h2> Article e </h2>
     
    <TR>
    <TD ALIGN=CENTER VALIGN=TOP><FONT SIZE=1>Indiquez la quantité souhaitée<BR><select name="quantitee" id="quantitee" onChange="calcule('quantitee','prixe','totale')">
    <option value="0" selected></option>
    <option value="1">1 exemplaire</option>
    <option value="2">2 exemplaires</option>
    <option value="3">3 exemplaires</option>
    <option value="4">4 exemplaires</option>
    <option value="5">5 exemplaires</option>
    <option value="6">6 exemplaires</option>
    <option value="7">7 exemplaires</option>
    <option value="8">8 exemplaires</option>
    <option value="9">9 exemplaires</option>
    <option value="10">10 exemplaires</option>
    </select> <B>€</B> 29,00
    <br>
    <br>
    <input id="totale" type="text" name="totale" readonly="true" SIZE=8 MAXLENGTH=8> €
    </TD>		
    		<TD ALIGN=RIGHT VALIGN=TOP><FONT SIZE=2></TD>
    	</TR>
     
     
    <h2> total </h2>
     
    <B>Total de la commande :</B> <input id="totalz" type="text" name="totalz" readonly="true" SIZE=12 MAXLENGTH=12> €  <INPUT TYPE="button" VALUE="Calculer" onClick="totalX('totala','totalb','totalc','totald','totale','totalz')">
    <HR>
     
     
    </BODY>
    </HTML>

    EDIT : Ha ! Il semblerait que ca tourne, mais uniquement quand chaque Articles a été selectionnés pour au moins un exemplaire. Si on ne bouge pas à chaque menu déroulant : NaN

    Peut être puis je ajouter dans les 5 premières fonctions une ligne pour arranger cela ?
    Ou une valeure par defaut en plus dans les menu déroulant ?

    Ou alors il faut ajouter des conditions dans la fonction Total pour ne pas planter en cas d'absence d'une des variables resultat?

  12. #12
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Un code un peu plus beau, on pourrait grandement l'améliorer, mais je ne fais que répondre à la demande. Tu as bien situé le dernier problème, voici ma version :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    <!doctype html>
    <HTML>
    <HEAD>
    <meta charset="utf-8">
    <script language="javascript">
    function calculSousTotal(quantite, prix, sousTotal) {
      document.getElementById(sousTotal).value = 
        parseInt(document.getElementById(quantite).value) * prix;
    }
     
    function calculTotal(totala,totalb,totalc,totald,totale,totalz)
    { 
    var ra = parseInt(document.getElementById(totala).value) || 0,
    rb = parseInt(document.getElementById(totalb).value) || 0,
    rc =  parseInt(document.getElementById(totalc).value) || 0,
    rd =  parseInt(document.getElementById(totald).value) || 0,
    re =  parseInt(document.getElementById(totale).value) || 0;
     
     
    document.getElementById(totalz).value = ra+rb+rc+rd+re;
     
     
    }
     
     
    </script>
     
    </HEAD>
     
    <BODY>
     
     
    <h1> TEST </h1>
     
     
    <h2> Article a </h2>
     
    <TR>
    <TD ALIGN=CENTER VALIGN=TOP><FONT SIZE=1>Indiquez la quantité souhaitée<BR><select name="quantitea" id="quantitea" onChange="calculSousTotal('quantitea',7,'totala')">
    <option value="0" selected></option>
    <option value="1">1 exemplaire</option>
    <option value="2">2 exemplaires</option>
    <option value="3">3 exemplaires</option>
    <option value="4">4 exemplaires</option>
    <option value="5">5 exemplaires</option>
    <option value="6">6 exemplaires</option>
    <option value="7">7 exemplaires</option>
    <option value="8">8 exemplaires</option>
    <option value="9">9 exemplaires</option>
    <option value="10">10 exemplaires</option>
    </select> <B>€</B> 7,00
    <br>
    <br>
    <input id="totala" type="text" name="totala" readonly="true" SIZE=8 MAXLENGTH=8> €
    </TD>		
    		<TD ALIGN=RIGHT VALIGN=TOP><FONT SIZE=2></TD>
    	</TR>
     
    <h2> Article b </h2>
     
    <TR>
     
    		<TD ALIGN=CENTER VALIGN=TOP><FONT SIZE=1>Indiquez la quantité souhaitée<BR><select name="quantiteb" id="quantiteb" onChange="calculSousTotal('quantiteb',7,'totalb')">
    <option value="0" selected></option>
    <option value="1">1 exemplaire</option>
    <option value="2">2 exemplaires</option>
    <option value="3">3 exemplaires</option>
    <option value="4">4 exemplaires</option>
    <option value="5">5 exemplaires</option>
    <option value="6">6 exemplaires</option>
    <option value="7">7 exemplaires</option>
    <option value="8">8 exemplaires</option>
    <option value="9">9 exemplaires</option>
    <option value="10">10 exemplaires</option>
    </select> <B>€</B> 7,00
    <br>
    <br>
     
     
     
    <input id="totalb" type="text" name="totalb" readonly="true" SIZE=8 MAXLENGTH=8> €
    </TD>		
    		<TD ALIGN=RIGHT VALIGN=TOP><FONT SIZE=2></TD>
    	</TR>
     
     
    <h2> Article c </h2>
     
    <TR>
    <TD ALIGN=CENTER VALIGN=TOP><FONT SIZE=1>Indiquez la quantité souhaitée<BR><select name="quantitec" id="quantitec" onChange="calculSousTotal('quantitec',28,'totalc')">
    <option value="0" selected></option>
    <option value="1">1 exemplaire</option>
    <option value="2">2 exemplaires</option>
    <option value="3">3 exemplaires</option>
    <option value="4">4 exemplaires</option>
    <option value="5">5 exemplaires</option>
    <option value="6">6 exemplaires</option>
    <option value="7">7 exemplaires</option>
    <option value="8">8 exemplaires</option>
    <option value="9">9 exemplaires</option>
    <option value="10">10 exemplaires</option>
    </select> <B>€</B> 28,00
    <br>
    <br>
    <input id="totalc" type="text" name="totalc" readonly="true" SIZE=8 MAXLENGTH=8> €
    </TD>		
    		<TD ALIGN=RIGHT VALIGN=TOP><FONT SIZE=2></TD>
    	</TR>
     
     
    <h2> Article d </h2>
     
    <TR>
    <TD ALIGN=CENTER VALIGN=TOP><FONT SIZE=1>Indiquez la quantité souhaitée<BR><select name="quantited" id="quantited" onChange="calculSousTotal('quantited',10,'totald')">
    <option value="0" selected></option>
    <option value="1">1 exemplaire</option>
    <option value="2">2 exemplaires</option>
    <option value="3">3 exemplaires</option>
    <option value="4">4 exemplaires</option>
    <option value="5">5 exemplaires</option>
    <option value="6">6 exemplaires</option>
    <option value="7">7 exemplaires</option>
    <option value="8">8 exemplaires</option>
    <option value="9">9 exemplaires</option>
    <option value="10">10 exemplaires</option>
    </select> <B>€</B> 10,00
    <br>
    <br>
    <input id="totald" type="text" name="totald" readonly="true" SIZE=8 MAXLENGTH=8> €
    </TD>		
    		<TD ALIGN=RIGHT VALIGN=TOP><FONT SIZE=2></TD>
    	</TR>
     
     
    <h2> Article e </h2>
     
    <TR>
    <TD ALIGN=CENTER VALIGN=TOP><FONT SIZE=1>Indiquez la quantité souhaitée<BR><select name="quantitee" id="quantitee" onChange="calculSousTotal('quantitee',29,'totale')">
    <option value="0" selected></option>
    <option value="1">1 exemplaire</option>
    <option value="2">2 exemplaires</option>
    <option value="3">3 exemplaires</option>
    <option value="4">4 exemplaires</option>
    <option value="5">5 exemplaires</option>
    <option value="6">6 exemplaires</option>
    <option value="7">7 exemplaires</option>
    <option value="8">8 exemplaires</option>
    <option value="9">9 exemplaires</option>
    <option value="10">10 exemplaires</option>
    </select> <B>€</B> 29,00
    <br>
    <br>
    <input id="totale" type="text" name="totale" readonly="true" SIZE=8 MAXLENGTH=8> €
    </TD>		
    		<TD ALIGN=RIGHT VALIGN=TOP><FONT SIZE=2></TD>
    	</TR>
     
     
    <h2> total </h2>
     
    <B>Total de la commande :</B> <input id="totalz" type="text" name="totalz" readonly="true" SIZE=12 MAXLENGTH=12> €  <INPUT TYPE="button" VALUE="Calculer" onClick="calculTotal('totala','totalb','totalc','totald','totale','totalz')">
    <HR>
     
     
    </BODY>
    </HTML>
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Ha oui, j'avoue qu'on voit l'homme d'expérience !

    C'est un grand changement par rapport à mes fonctions ! Et pour être honnete j'ai du mal à saisir comment tu arrives au resutlat que je souhaite avec ton code

    Mais il fonctionne !

    Pourrais je abuser et te demander de m'expliquer très brievement comment tu arrives à ce résultat ?

    Je ne comprend pas bien comment tu arrives à faire tourner la fonction sous-total, avec des arguments differents dans la fonction et dans HTML (quantite,prix,sousTotal ; mais tu gardes quantitea,b,c,... dans le corps ?) Oo

    Je me rend compte que mes bases de JS sont vraiment dépassées

    Et ... Merci encore !

  14. #14
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Premièrement, tant qu'à faire autant réutiliser une fonction le plus possible. Pour ce faire, il suffit de passer ce qui change en argument. Dans ton cas on fait tout le temps le même calcul, mais avec des valeurs et destinations différentes.

    On a donc trois arguments passés à la fonction calculSousTotal qui sont quantite, prix et sousTotal.
    quantite : représente en fait l'id de la liste déroulante utilisée, par exemple <select id="quantitec" ...,
    prix : est explicite,
    sousTotal : représente lui le champ de saisie cible, par exemple <input id="totalc" ...
    Finalement la fonction est simple comme tout, on met dans le champs de saisie totalc le produit de la quantité sélectionnée et du prix défini en argument.

    Concernant la fonction calculTotal on a ce genre de ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rc =  parseInt(document.getElementById(totalc).value) || 0,
    qui veut dire "affecter à rc la valeur convertie en entier contenue dans totalc ou si celle-ci est fausse affecter 0 à rc".
    Si totalc est vide parseInt() retourne NaN, celui-ci est considéré comme faux dans les tests. Dans notre cas rc reçoit donc 0 comme valeur.

    Il y a tout un tas d'améliorations à apporter à ce script. Mais je te laisse le soin d'approfondir la chose. Si tu as d'autres questions ou si tu penses que je me suis mal expliqué n'hésite pas.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    J'avoue, c'est beaucoup plus propre et optimisé comme code !

    Par contre j'ai du mal saisir un détail qd même

    Ta fonction est donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function calculSousTotal(quantite, prix, sousTotal) {
    Elle se nomme calculSousTotal et a pour attribut/variable : quantite, prix, sousTotal

    Pourtant, quand tu l'appeles, tu changes les argument...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    onChange="calculSousTotal('quantitea',7,'totala')
    Pour mettre ceux de chaque article.

    Est ce la position (l'ordre) des arguments qui font que ils sont pris en compte chaque fois de la bonne façon automatiquement, selon l'article et le "SELECT"?


    Bon après cette question, promis, je retourne bouquiner pour ne plus faire le boulet ici :p

  16. #16
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Oui, c'est l'ordre qui fait que la valeur est affectée au bon argument.
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

Discussions similaires

  1. [MySQL] resultat fonction dans une autre fonction
    Par cobra85 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/03/2015, 16h29
  2. Réponses: 11
    Dernier message: 03/03/2009, 01h03
  3. Comment détruire un widget créé dans une autre fonction?
    Par elwario91 dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 08/04/2008, 12h02
  4. Réponses: 2
    Dernier message: 31/12/2007, 13h50
  5. Réponses: 5
    Dernier message: 29/06/2006, 17h23

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