Bonjour,
Tout d'abord je tiens à préciser que la fonction que je t'ai mise fait le calcul ligne par ligne et le total des colonnes montant, elle est a mettre sur l'événement onchange par exemple des INPUTs type text.
En tout cas, toutes vos méthodes me font évoluer en JS ;o)
c'est pour cela que je me permets d'écrire ce qui suit...
Et en lignes de code, c'est moins long(mais plus efficace que ta méthode ? bonne question...)
Longueur code :
Il faut comparer le comparable,
l'équivalent de la fonction de 007Julien, pour calculer la somme des totaux, est
//-----------------
function fctWhile(){
var Ind = 1,
Obj = null,
Somme = 0;
while((Obj = document.getElementById( "montant_0" +Ind++))){
Somme += parseInt( Obj.value);
}
return( Somme);
}
à comparer donc avec
//-----------------
function fctJulien(){
var i, som = 0;
var npt = document.getElementsByTagName("input");
var l = npt.length;
for (i = 0; i < l; i++) {
if (npt[i].id.substr(0, 8) == "montant_") {
som += parseInt(npt[i].value);
}
}
return( som);
}
...en terme de longueur c'est équivalent ou presque, la longueur de code n'étant pas prépondérante il est préférable de parler d'optimisation de code...
Efficacité :
si le résultat est le même, et il l'est, on a donc la même efficacité.
Vitesse :
la les choses sont différentes...
j'ai réalisé quelques tests rapides, sur 1000 boucles, dont je livre le résultat en ms ici
...avec 15 INPUTs dont 5 montant_
fctJulien() fctWhile()
IExplorer 235 191
FireFox 147 84
Opera 22 10
Safari 24 6
...avec 55 INPUTs dont 5 montant_
fctJulien() fctWhile()
IExplorer 522 210
FireFox 262 83
Opera 44 10
Safari 50 6
Tout d'abord ces valeurs sont à prendre en relatif bien sûr!
On voit que la fctWhile() est pour ainsi dire constante alors que la fctJulien() augmente avec le nombre d'INPUTs dans le document.
La fctJulien() pêche dans le sens où elle va parcourir TOUS les inputs, même les non concernés. Elle a cependant l'avantage d'être indépendante du chrono des INPUTs
Conclusion :
Que sont quelques ms au regard du temps que l'on perd dans les bouchons pour aller se faire dorer la pilule?
L'important reste que le résultat obtenu soit le résultat attendu!
L'étude n'est pas forcément complète, compte tenu de l'influence éventuelle des autres fonctions natives.
Voilou!!
;O)