Trouver la colonne en cours

Résolu
Signaler
Messages postés
3
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
21 janvier 2009
-
Messages postés
3
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
21 janvier 2009
-
Bonjour à tous,



<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>
 




Voici mon premier post, donc je vous prie d’être indulgent ^^


Voila le topo :



 




J’ai une application J2EE qui en gros affiche un tableau et qui calcule les totaux des cases selon les colonnes..


Le souci est que la fonction que j’ai trouvé recalcule a chaque fois pour toutes les colonnes du tableau, des qu’on rajoute une valeur, au lieu de recalculer le total de la colonne ou la valeur à été ajoutée..



 




Voici le code dans la jsp qui genere les cellules



 





<
td
class
=
"td_activite_duree"
>








<
input
id
=
"${activite.key.code}_${case.id}_${case.code}_${case.formattedDate}"





<
c:if


test

"${case.projet_clostrue }">                    readonly"readonly"                                                   class "input_text input_activite_duree_clos"






      name="clos"








</
c:if
>








<
c:if


test
=
"${case.projet_closfalse && case.bloquant true }">





readonly ="readonly"








name= "bloque"








class="input_text input_activite_duree_bloque"








</
c:if
>








<
c:if


test
=
"${case.projet_closfalse && case.bloquant false }">





class ="input_text input_activite_duree"








</
c:if
>








type
=
"text"








maxlength
=
"5"








autocomplete
=
"off"








value
=
"${case.consomation}"





onchange
=
"javascript:checkValeur(this)"








onkeydown
=
"javascript:actionKey(this,event,'center_view_content_body_table')"                                                         








onkeypress
=
"if(self.event.keyCode == 13){javascript:checkValeur(this)}"








/>








<
input
type
=
"hidden"
id
=
"hidden_activite"
name
=
"hidden_activite"
value
=
"${activite.key.code}_${case.id}_${case.code}_${case.formattedDate}"/>





</
td
>



 




Et la fonction qui fait le calcul :



 





function
calculSousTotalColonne()








{    









     










     

var
rep = /_/g;









      element = document.fsave.hidden_activite;









     

alert(element[8].value)









 







     

if
(element!=
null
)









     

{









            if
(element.length>0)









           

{









                  for
(
var
i=0; i<element.length; i++)









                 

{









     

nameField = element[i].value;









      tab = nameField.split(rep);









      document.getElementById(tab[0]+
"_"
+tab[3]).value =
""
;









      document.getElementById(tab[0]).value =
""
;









            document.getElementById(tab[0]+
"_"
+tab[3]).className=
"sous_total_jour"
;









                 

}









 







                 










                  for
(
var
i=0; i<element.length; i++)









                 

{    









                 










                        var
nameField = element[i].value;









     

var
source = parseFloat(document.getElementById(nameField).value);









                        tab = nameField.split(rep);








var
temp = parseFloat(document.getElementById(tab[0]+
"_"
+tab[3]).value);









                            

if
(isNaN(temp))









                                   temp=0;









                        temp = parseFloat(temp) + source;









                       










                       

if
(source==parseFloat(0))









                       

{









                            

document.getElementById(nameField).value =
""
;









                       

}









                        if
(isNaN(temp))









                       

{









     

var
total = parseFloat(document.getElementById(tab[0]).value);









                            

if
(isNaN(total))









                                   total=0;









                            

total = parseFloat(total) + source;









                             document.getElementById(tab[0]).value = total;









      document.getElementById(tab[0]+
"_"
+tab[3]).value = temp;               document.getElementById(tab[0]+
"_"
+tab[3]).className=
"sous_total_jour"
;









                                  

}









                          

}









                       










                  }









                 










            }









      }



 




J’aimerai en fait récuperer la colonne dans laquelle la valeur a été ajoutée.. afin de faire un for in dedans.
Cela eviterait les calculs inutiles, seulement...je n'ai aucune idée de comment faire...
Si vous avez une idée je suis preneur, merci

3 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
12
bonjour,

colonne ? un alors ?

on n'a aucun html ? faut deviner quoi....
du coup, bien entendu, ça ne correspondra peut-être pas !

<table>
    ----
        un   ,     deux   ,
                ,
                quatre   ,
    

Cordialement          [mon Site] [M'écrire] Bul         
Messages postés
3
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
21 janvier 2009

Oui il s'agit d'un <table>, et je te remercie, car le code que tu m'as donné fonctionne!
Maintenant il faut que je vois comment récuperer ces données dans la fonction Javascript..

Mais je vais me débrouiller!
Merci encore pour ton aide rapide et efficace!
Bonne journée!
Messages postés
3
Date d'inscription
mercredi 21 janvier 2009
Statut
Membre
Dernière intervention
21 janvier 2009

Bah en fait je galere...
j'ai modifié ma fonction afin de lui passer l'objet case, ce qui permet de récuperer la colonne en cours pour ne faire que le calcul dessus. :

function
calculSousTotalColonne(objet)

<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>







{    

var
rep = /_/g;









      element = document.fsave.hidden_activite;











      colonne = objet.parentNode.cellIndex;
      objet.value=objet.value.replace(rep,".");
     

alert(element[8].value)




     

if
(element!=
null
)









     

{









            if
(element.length>0)









           

{









                  for
(
var
i=0; i<element.length; i++)









                 

{









     

nameField = element[i].value;









      tab = nameField.split(rep);









      document.getElementById(tab[0]+
"_"
+tab[3]).value =
""
;









      document.getElementById(tab[0]).value =
""
;









            document.getElementById(tab[0]+
"_"
+tab[3]).className=
"sous_total_jour"
;









                 

}























                  for
(
var
i=0; i<element.length; i++)







                 

{    









  var
nameField = element[i].value;









     

var
source = parseFloat(document.getElementById(nameField).value);









                        tab = nameField.split(rep);








var
temp = parseFloat(document.getElementById(tab[0]+
"_"
+tab[3]).value);









                            

if
(isNaN(temp))









                                   temp=0;









                        temp = parseFloat(temp) + source;




                       

if
(source==parseFloat(0))









                       

{









                            

document.getElementById(nameField).value =
""
;









                       

}









                        if
(isNaN(temp))









                       

{









     

var
total = parseFloat(document.getElementById(tab[0]).value);









                            

if
(isNaN(total))









                                   total=0;









                            

total = parseFloat(total) + source;









                             document.getElementById(tab[0]).value = total;









      document.getElementById(tab[0]+
"_"
+tab[3]).value = temp;               document.getElementById(tab[0]+
"_"
+tab[3]).className=
"sous_total_jour"
;









                                  

}









                          

}  




                  }  




            }









      }



j'ai essayé de remplacer la deuxieme boucle par 

for (objet.value in colonne)

mais rien ne se passe...j'ai du louper quelquechose mais je ne vois pas quoi..

Si quelqu'un pouvait m'aider a nouveau ce serait super!