11/06/2008, 15:45
|
| 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. |