Calcul total d'une série de champ

fdthierry Messages postés 106 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 27 septembre 2019 - 25 mai 2005 à 13:38
fdthierry Messages postés 106 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 27 septembre 2019 - 26 mai 2005 à 10:05
Bonjour,

Dans une page ASP je construit un tableau.
Dans ce tableau, un champ txtDoc
Sur ce champ, l'évenement onChange=NbDoc()
Voici la function javascript:
function NbDoc()
{
var strDoc=0;
var strPx=0;
var strChxDoc='';
for (i=0; i<document.getElementsByName("txtDoc").length; i++)
{
if (document.getElementsByName("txtDoc")[i].value=='') // si vide
{
document.getElementsByName("txtDoc")[i].value=0; // je mets la valeur 0
}
else
{
strDoc+=eval(document.getElementsByName("txtDoc")[i].value); // sinon j'ajoute la valeur à la précédente
}
}
}
Cela me permet de rechercher tous les champs txtDoc de la page et de d'ajouter la valeur de chacun et obtenir ainsi un total de ces champs pour l'afficher dans ma page principale.
Il s'avère que c'est super lent car la page peut contenir 200 cahmps voire plus.
Comment puis faire autrement ?
Sachant que si je change la valeur je souhaite recalculer en moins ou en plus!

Amicalement,
Thierry

4 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
25 mai 2005 à 15:28
Bonjour,
éviter le test ( si possible )
et faire
strDoc+=Number(formulaire.txtDoc[i].value);

mais pas sûr que cela suffise ..
une piste :
mémoriser les "valeurs précédentes" ( dans un
array() ) et en cas de modif
total=total-valeur précédente[i]+valeur actuelle[i];
valeur précédente[i]=valeur actuelle[i];
peut-être ?
Cordialement. Bul. ~Site~~[mailto:marcelBultez@tiscali.fr Mail]~
0
GhislainLavoie Messages postés 289 Date d'inscription vendredi 11 mars 2005 Statut Membre Dernière intervention 3 avril 2008 3
26 mai 2005 à 02:32
Salut!

Si j'ai bien compris le problème, voici un script qui te permetteras de modifier le total selement avec la valeur du champs dont la valeur a changée.


<html>
<head>
<title>Untitled</title>
<script type= "text/javascript">
function initTxtDoc()
{

champsTotal = document.forms[0].total;
total = 0;
var allTxtDoc = document.getElementsByName("txtDoc");
for (i=0;i
</head>

<form>

----
,
----
,
----
,
----
,
----
,
----
,

</form>

</html>



A+, Ghislain
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
26 mai 2005 à 06:28
j'avais aussi fait un exemple,
et comme il diffère ...

<HTML>
<HEAD>
<TITLE></TITLE>
<script type="text/javascript">
function calcul(zone)
{ frm.tot.value=Number(frm.tot.value)-ava[zone]+Number(frm.det[zone].value);
ava[zone]=Number(frm.det[zone].value); }
</script>
</HEAD>
<form name="frm">
1

2

3

4

5

=
<form>

<script type="text/javascript">
var ava=new Array();
for ( var n=0; n<frm.det.length; n++ )
{ ava.push(frm.det[n].value);
frm.tot.value=Number(frm.tot.value)+Number(frm.det[n].value); }
</script>
</HTML>

Cordialement. Bul. ~Site~~[mailto:marcelBultez@tiscali.fr Mail]~
0
fdthierry Messages postés 106 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 27 septembre 2019
26 mai 2005 à 10:05
Merci à tous les deux, je vais explorer ces pistes.
Petite précision qui est tout de même importante, je vais planter le décor:
Ma page principale contient un formulaire
Dans ce formulaire j'ai une iframe car cette page peut afficher soit directement une page défini soit une page sélectionnée dans un menu
Dans la page iframe, aucun formulaire n'est défini, je récupère toute les valeurs en faisant un parent.document..... afin de gérer les choix sur la page principale dans des champs cachés que je récupère dans ma page ASP en request("txtChamp")

Y a certainement une autre solution, mais j'ai trouvé que celle ci ;o)

Amicalement
Thierry
0
Rejoignez-nous