Trouver la colonne en cours

Résolu
Schlobock Messages postés 3 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 21 janvier 2009 - 21 janv. 2009 à 11:48
Schlobock Messages postés 3 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 21 janvier 2009 - 21 janv. 2009 à 15:26
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

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
21 janv. 2009 à 12:10
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         
3
Schlobock Messages postés 3 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 21 janvier 2009
21 janv. 2009 à 13:52
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!
0
Schlobock Messages postés 3 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 21 janvier 2009
21 janv. 2009 à 15:26
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!
0
Rejoignez-nous