Ver Mensaje Individual
  #21 (permalink)  
Antiguo 11/06/2008, 15:45
Avatar de KarlanKas
KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 23 años
Puntos: 61
Respuesta: Suma de dos horas en java script

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!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.