No pierdas las esperanzas porque todo los cálculos que se pueden hacer en Excel los puedes hacer en Javascript y de diferentes formas, al gusto tuyo incluso...
Primeramente no se si todo el HTML lo generas a través de PHP o lo ingresas como HTML completo. si tienes todos los 50 campos en un solo texto HTML hay muchas soluciones para reducir código y también lo puedes conseguir con Javascript, en este ejemplo solo te he reducido los nombres de los bancos en cada campo y no es necesario enumerar nada como
deposito_1, deposito_2..., porque todo lo puedes reducir usando bucles y arreglos.
El HTML (antes del código Javascript)
Javascript
:
Código Javascript
:
Ver originalvar banks = {"~": 0, "Bajio": 0, "Banamex": 0, "Banco Azteca": 0, "Banco Walmart": 0, "Banorte": 0,
"Banregio": 0, "BBVA Bancomer": 0, "Coppel": 0, "HSBC": 0, "Inbursa": 0, "IXE": 0, "Mifel": 0, "Santander": 0, "Scotiabank": 0};
var form = document.forms.banks_deposits;
var selects = form["banco[]"];
var deposit_fields = form["deposito[]"];
//muestra resultado
var result = function(){
var html_result = [];
for(var j in banks) html_result.push(j == '~' ? '' : j + ' : ' + banks[j]);
document.getElementById("result").innerHTML = "Totales: <br />" + html_result.join("<br />");
}
//actualizar cantidad de cada banco, sumar los valores de cada campo
var update = function(){
for(var j in banks){
var x = 0, field;
banks[j] = 0;
while(field = deposit_fields[x])
if(selects[x++].value == j) banks[j] += +field.value;
}
result()
};
//armamos todo, recorremos todos los campos
for(var i=0; i < deposit_fields.length; i++){
//crea la lista de bancos para cada campo, asi mantenemos ordenado y evitamos el exceso de código HTML
var optionsHTML = '';
for(var j in banks) optionsHTML += '<option value="'+j+'">'+j+'</option>';
selects[i].innerHTML = optionsHTML
////
//eventos para actualizar el total por cada cambio de banco o valor de depósito
selects[i].onchange = update
deposit_fields[i].onkeyup = update
deposit_fields[i].onchange = update
////
}
update();
Probar tu ejemplo (después de todo):
Código Javascript
:
Ver original//TU EJEMPLO
var z = 0;
selects[z].value = "Banamex"; deposit_fields[z++].value = 50;
selects[z].value = "BBVA Bancomer"; deposit_fields[z++].value = 100;
selects[z].value = "HSBC"; deposit_fields[z++].value = 300;
selects[z].value = "Banamex"; deposit_fields[z++].value = 30;
selects[z].value = "BBVA Bancomer"; deposit_fields[z++].value = 80;
selects[z].value = "HSBC"; deposit_fields[z++].value = 10;
//RESULTADO EJEMPLO
update()
Aquí te dejé un demo para que lo pruebes:
http://jsfiddle.net/wZVanG/wLa8wsg5/