...el problema que tienes es que cuando recibes un valor vació e intentas transformarlo en entero con el parseInt, obtendrás un valor NaN, o sea un Not a Number, y eso te dará un error en la operación que quieres efectuar. Para solucionarlo podes verificar con el método isNaN() cada valor..te doy un ejemplo...
una forma fácil sin que te compliques de resolverlo seria asi...
Código Javascript
:
Ver originalfunction sumar(){
var numeros = [];
var suma = 0;
var a1 = parseInt(document.getElementById('valor1').value);
numeros.push(a1);
var a2 = parseInt(document.getElementById('valor2').value);
numeros.push(a2);
var a3 = parseInt(document.getElementById('valor3').value);
numeros.push(a3);
for(var i=0; i<numeros.length; i++){
if(isNaN(numeros[i])){
numeros[i] = 0;
}
suma+=numeros[i];
}
console.log(suma);
}
..por supuesto podes optimizar esta función, podes recorrer todo el formulario e ir agregando cada valor en el array, transformalo en int verificar si es Nan para luego sumarlo