Calcul total d'une série de champ

Signaler
Messages postés
106
Date d'inscription
lundi 24 novembre 2003
Statut
Membre
Dernière intervention
27 septembre 2019
-
fdthierry
Messages postés
106
Date d'inscription
lundi 24 novembre 2003
Statut
Membre
Dernière intervention
27 septembre 2019
-
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

Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
30
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]~
Messages postés
289
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
3 avril 2008
3
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
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
30
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]~
Messages postés
106
Date d'inscription
lundi 24 novembre 2003
Statut
Membre
Dernière intervention
27 septembre 2019

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