A ver, el primer error es en las dos primeras líneas:
Código Javascript
:
Ver originalvar total = document.getElementsByName('calcsub[]');
var total = 0;
O sea tu variable
total al principio es un objeto que contiene todos los inputs con name calcsub pero en la siguiente línea es nula :P
Otra cosa que observo es que usás notación de jQuery. Si Firebug no te tira error debe ser que lo estás utilizando. El problema es que sólo lo usás en una sola línea :P
Podrías hacer algo así:
Código HTML:
<script>
function sumar(){
var totalInp = $('[name="calcsub"]');
var total = 0;
totalInp.each(function(){
total += parseFloat($(this).val());
});
$('#total').val(total);
}
</script>
<div id="soy-un-div-que-se-desvanece">
<p><input name="calcsub" /></p>
<p><input name="calcsub" /></p>
<p><input name="calcsub" /></p>
<input id = "total" />
<a href="#" onclick="sumar(); return false;">Sumar</a>
</div>
En ese caso usamos el método de jQuery .each(), que itera entre todos los elementos que obtuvo del selector (todos los inputs con name 'calcsub'). El problema es que parseFloat() retorna NaN para cuando el parámetro es
undefined (lo cual es comprensible) que es lo que devuelve .val() si el input está en blanco. Podrías arreglar eso así:
Código Javascript
:
Ver originaltotalInp.each(function(){
var valor = $(this).val();
if(valor == ""){ valor = 0;};
total += parseFloat(valor);
});
De esta forma podés dejar inputs en blanco y estos valdrán 0.