Ver Mensaje Individual
  #23 (permalink)  
Antiguo 24/02/2010, 10:32
yonita
 
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Suma de dos horas en java script

Cita:
Iniciado por KarlanKas Ver Mensaje
Bueno, creo que ya lo he resuelto. Ahora antes de cada nombre de campo tienes que poner el signo de lo que quieras hacer con él: sumar o restar.

Para sumar el total he hecho una solución que igual no es muy elegante pero que funciona. Dime qué te parece:

Código:
<html>
<head>
<title>Untitled</title>
<script>


function calcular(){

	horatotale=new Array(0,0,0);
	for(b=0;b<arguments.length-1;b++){

		sumador=parseInt(arguments[b].charAt(0)+"1");
		campo=arguments[b].substring(1,arguments[b].length);
		horas=obj(campo).value.split(":");

		for(a=0;a<3;a++){
			horas[a]=(isNaN(parseInt(horas[a])))?0:parseInt(horas[a])
			horatotale[a]=(b==0)?(sumador*horas[a]):horatotale[a]+(sumador*horas[a]); // Suma o resta según prefieras

		}
	}

	horatotal=new Date()
	horatotal.setHours(horatotale[0]);
	horatotal.setMinutes(horatotale[1]);
	horatotal.setSeconds(horatotale[2]);

	obj(arguments[arguments.length-1]).value=horatotal.getHours()+":"+horatotal.getMinutes()+":"+horatotal.getSeconds();

}

function obj(x){
y= document.getElementsByName(x);
return y[0];
}
</script>
</head>

<body>
<form action="#" onsubmit="calcular('+horatotal','+horatotal2','+horatotal3','+horatotal4','totalisimo');return false">
<input type="text" name="hora1" onblur="calcular('+hora1','-hora2','horatotal');calcular('+horatotal','+horatotal2','+horatotal3','+horatotal4','totalisimo')" /> - 
<input type="text" name="hora2" onblur="calcular('+hora1','-hora2','horatotal');calcular('+horatotal','+horatotal2','+horatotal3','+horatotal4','totalisimo')" /> 
= <input type="text" name="horatotal" /> <input type="submit" value="calcular" />
<br />
<br />
<input type="text" name="pepe" onblur="calcular('+pepe','-juan','horatotal2');calcular('+horatotal','+horatotal2','+horatotal3','+horatotal4','totalisimo')" /> - 
<input type="text" name="juan" onblur="calcular('+pepe','-juan','horatotal2');calcular('+horatotal','+horatotal2','+horatotal3','+horatotal4','totalisimo')" /> 
= <input type="text" name="horatotal2" /> <input type="submit" value="calcular" />
<br />
<br />
<input type="text" name="pepe2" onblur="calcular('+pepe2','-juan2','horatotal3');calcular('+horatotal','+horatotal2','+horatotal3','+horatotal4','totalisimo')" /> - 
<input type="text" name="juan2" onblur="calcular('+pepe2','-juan2','horatotal3');calcular('+horatotal','+horatotal2','+horatotal3','+horatotal4','totalisimo')" /> 
= <input type="text" name="horatotal3" /> <input type="submit" value="calcular" />
<br />
<br />
<input type="text" name="pepe4" onblur="calcular('+pepe4','-juan4','horatotal4');calcular('+horatotal','+horatotal2','+horatotal3','+horatotal4','totalisimo')" /> - 
<input type="text" name="juan4" onblur="calcular('+pepe4','-juan4','horatotal4');calcular('+horatotal','+horatotal2','+horatotal3','+horatotal4','totalisimo')" /> 
= <input type="text" name="horatotal4" /> <input type="submit" value="calcular" />
<br />
<br />


<input type="text" name="totalisimo" />

</form>


</body>
</html>
El problema está en que si la suma de todas las horas da más de 23 horas con 59 minutos y 59 segundos no pondrá todas las horas sino las que sobrepasen esas 24 horas. ¿Importa? Sumarán alguna vez más de 24 horas?
Un saludo!

Hola, he probado tu codigo pero resulta que si lo pruebo con estos valores: hora1=00:02:00 y hora2=00:09:00 no resta bien y nose porque. Si puedes ayudarme te lo agradeceria mucho