Page 1 sur 1

fonction avec variable

Posté : 09 juin 2005, 16:02
par wam
bjr a tous
j'ai un petit probleme avec une fonction -->
function CalculTotalOpt()
{   //total options
    var prix1 = window.document.forms['formulaire'].elements['liste1'].value;
    var prix2 = window.document.forms['formulaire'].elements['liste2'].value;
    var prix3 = window.document.forms['formulaire'].elements['liste3'].value;
    var prix4 = window.document.forms['formulaire'].elements['liste4'].value;
    var prix5 = window.document.forms['formulaire'].elements['liste5'].value;
    var prix6 = window.document.forms['formulaire'].elements['liste6'].value;
    var prix7 = window.document.forms['formulaire'].elements['liste7'].value;
    var prix8 = window.document.forms['formulaire'].elements['liste8'].value;
    var prix9 = window.document.forms['formulaire'].elements['liste9'].value;
    var PrixTotalOpt = 0;
    PrixTotalOpt = parseFloat(prix1) + parseFloat(prix2) + parseFloat(prix3)
             + parseFloat(prix4) + parseFloat(prix5) + parseFloat(prix6)
              + parseFloat(prix7) + parseFloat(prix8) + parseFloat(prix9);
    window.document.forms['formulaire'].elements['totalopt'].value = PrixTotalOpt;
    //total
    var prix = window.document.forms['formulaire'].elements['base'].value;
    var prixTotal = 0;
    prixTotal = parseFloat(prix)+PrixTotalOpt;
    window.document.forms['formulaire'].elements['total'].value = prixTotal;
}
 
en fait, elle fait une addition de chaque nbre de chaque liste (1..9)
cependant, le nbre d'elt de la liste peut varier
du coup, il faudrait mettre une variable du type

...
var prix$i = window.document.forms['formulaire'].elements['liste$i'].value;
...
 

je cherche, mais je tourne en rond
...

Posté : 10 juin 2005, 10:08
par sadeq
function CalculTotalOpt() 
{   //total options 
    var liste = window.document.forms['formulaire'].elements['liste[]']; 

    var PrixTotalOpt = 0; 
    for (i=0; i<liste.length; i++)
           PrixTotalOpt += parseFloat(liste[i].value);

    window.document.forms['formulaire'].elements['totalopt'].value = PrixTotalOpt; 
    //total 
    var prix = window.document.forms['formulaire'].elements['base'].value; 
    var prixTotal = 0; 
    prixTotal = parseFloat(prix)+PrixTotalOpt; 
    window.document.forms['formulaire'].elements['total'].value = prixTotal; 
} 
Avec l'HTML de la liste :
 <input name ="liste[]" value="10">
 <input name ="liste[]" value="20">
 <input name ="liste[]" value="30">
.... Tant de liste que tu veux...

Posté : 10 juin 2005, 10:14
par wam

Code : Tout sélectionner

echo '<td><select id="liste[]" onchange="CalculTotalOpt()">';
mes valeurs sont dans cette liste deroulante
avec ton code, ca ne marche pas, rien ne s'affiche




:? :? :?

Posté : 10 juin 2005, 10:18
par wam
j'y connais po gd chose,
mais ta variable liste retourne une valuer, donc du peux pas y appliquer length non?



:?

Posté : 10 juin 2005, 10:22
par sadeq
Attend, il faux bien expliquer ce que tu veux faire.
Est-ce que tu veux faire la sommes des valeurs de plusieurs listes select
ou alors tu veux simplement la somme des valeurs des options d'une seule liste.
Car ce n'est pas la même chose d'autant plus que ton code ne correspond pas à la deuxième proposition.

Ce que je t'ai donné fait la somme de plusieurs input ayant le même nom liste[] et ça peut être aussi plusieurs select ayant le même nom liste[]

Posté : 10 juin 2005, 10:28
par wam
j'ai tout plein de select dans des cases de tableau


sur chaque ligne, j'ai un nom , ,et dans la 2nde case, j'ai une liste deroulante
et ca un nbr n de fois
je vais, en bas de page faire le total de tous les elements selectionnés dans les select

exemple:
processeur amd(40€)
ecran 17'' (54€)


prix de base totalopt total
450 94 544

Posté : 10 juin 2005, 10:43
par sadeq
C'est bien ce que je pensais, hé bien le code de tout à l'heure te convient sauf que je viens de voir une petite erreur qui s'est glissée et que j'ai corrigé:
Essaye ce petit exemple qui va t'aider à comprendre:

3 listes qui présentes 3 articles, quand on selectionne des articles le total est calculé et affiché dans une zone total.
<script>
function CalculTotalOpt() 
{   //total options 
    var liste = document.all["liste[]"]; 
    var PrixTotalOpt = 0; 
    for (i=0; i<liste.length; i++) 
           PrixTotalOpt += parseFloat(liste[i].value); 

    document.all["total"].value = PrixTotalOpt; 
}  
</script>

<form name="formulaire">
<p>Articles
<p></p><select name ="liste[]" onChange="CalculTotalOpt()">
<option  value="0"></option>
<option  value="500">AMD</option>
<option  value="300">Ecran 19</option>
<option  value="100">Disque 160Go</option>
</select>
<p></p><select name ="liste[]" onChange="CalculTotalOpt()">
<option  value="0"></option>
<option  value="500">AMD</option>
<option  value="300">Ecran 19</option>
<option  value="100">Disque 160Go</option>
</select>
<p></p><select name ="liste[]" onChange="CalculTotalOpt()">
<option  value="0"></option>
<option  value="500">AMD</option>
<option  value="300">Ecran 19</option>
<option  value="100">Disque 160Go</option>
</select>
<p>Total <input name="total"></p>  
</form>

Posté : 10 juin 2005, 10:52
par wam
youhouhouhouhouhouhouh :D :D :D :D :D :D :D :D

ca le fait
apres 2, 3 bidouillages, ca marche
merci bcp
et vive phpfrance!!!!!!

j'ai posté mon problème sur au moins 5 forums depuis hier, et tu es le 1er a avoir résolu mon petit probleme


merci bcp et a une prochaine