Bonjour à tous,
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_clos==true}"> readonly="readonly" class="input_text input_activite_duree_clos"
name="clos"
</ c:if >
< c:if test = "${case.projet_clos==false && case.bloquant==true}">
readonly="readonly"
name="bloque"
class="input_text input_activite_duree_bloque"
</ c:if >
< c:if test = "${case.projet_clos==false && 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 