Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/01/2011, 10h49   #1
Invité de passage
 
Inscription : juillet 2008
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 18
Points : 1
Points : 1
Par défaut Calcul de somme dans un tableau

Bonjour,

Voici mon souci :

J'ai un tableau Mensuelle avec comme colonne Mois, Journalier et Horaire.

Et j'ai un autre tableau total avec comme colonne Journalier et Horaire.

je veux faire la somme de toutes les quantités saisies des cellules Journalier dans la cellule Journalier de mon tableau totale et pareil pour Horaire.

Je voulais mette un 'name' au niveau de mes td pour récupérer toutes les valeurs mais ce n'est pas possible. Donc j'ai crée une div dans chaque td (oui je sais c'est très moche) mais je n'ai pas trouvé d'autres solutions pour le moment.

Voici un bout de mon js :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
var divJour = document.getElementsByName('journalier');
var divHeure = document.getElementsByName('horaire');
var jour = document.getElementById('jour_'+count);
var heure = document.getElementById('heure_'+count);
 
totalJ = document.getElementById('mSaisirCapacite.totalJour_'+index);
totalH = document.getElementById('mSaisirCapacite.totalHeure_'+index);
 
var totJ = 0;
var totH = 0;
 
if(name == 'journalier'){
  for(i=0;i<jour.getElementsByTagName('input').length;i++){
	totJ = totJ+parseFloat(jour.getElementsByTagName('input')[i].value);			
  }
}
else if(name == 'horaire'){	
  for(i=0;i<heure.getElementsByTagName('input').length;i++){
	totH = totH+parseFloat(heure.getElementsByTagName('input')[i].value);
  }
}
totalJ.value = Math.round(totJ * 1000)/1000;
totalH.value = Math.round(totH * 1000)/1000;
Cette fonction est appelé dans chaque cellule dans un onChange.
Mes quantités ne se cumule pas et chaque fois que je saisie dans mon tableau mensuelle soit journalier ou horaire la somme de l'un ou l'autre se remet à 0.

J'espère avoir été assez compréhensible.

Merci pour votre aide.
kimblue77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 14h56   #2
Responsable JavaScript & AJAX

 
Avatar de vermine
 
Inscription : mars 2008
Messages : 2 686
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mars 2008
Messages : 2 686
Points : 5 768
Points : 5 768
Bonjour,

Je pense que c'est à cause de cet enchainement-ci :

Code :
1
2
3
4
5
6
7
8
9
10
 
var totJ = 0;
var totH = 0;
 
if(name == 'journalier'){
 
else if(name == 'horaire'){
 
totalJ.value = Math.round(totJ * 1000)/1000;
totalH.value = Math.round(totH * 1000)/1000;
Dans tous les cas, vous mettez les deux totaux à jours.
Dans les deux cas vous réinitialisez les totaux à zéro.
Mais vous ne faites le calcul que pour un seul des deux totaux. Donc l'autre reste à zéro.

Recalculez les deux ou bien mettez les nouvelles valeurs à bon escient l'une dans le if, l'autre dans le else.
__________________
Elen Poukram - Isegoria - Sandawe
vermine est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/01/2011, 11h03   #3
Invité de passage
 
Inscription : juillet 2008
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 18
Points : 1
Points : 1
Oui effectivement c'était bien ça merci.
kimblue77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h19.


 
 
 
 
Partenaires

Hébergement Web