Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Botón "parar" para un temporizador y recibir una hora

Estas en el tema de Botón "parar" para un temporizador y recibir una hora en el foro de Javascript en Foros del Web. Hola, me encontré un código de Javascript de un temporizador, le cambié para que empezara al darle clic a un botón, pero quiero que también ...
  #1 (permalink)  
Antiguo 02/08/2015, 18:53
Avatar de OPMUANRK  
Fecha de Ingreso: diciembre-2014
Mensajes: 52
Antigüedad: 9 años, 4 meses
Puntos: 1
Pregunta Botón "parar" para un temporizador y recibir una hora

Hola, me encontré un código de Javascript de un temporizador, le cambié para que empezara al darle clic a un botón, pero quiero que también tenga un botón de "parar/reiniciar", y también que reciba horas por un campo de texto en vez desde el código, aquí está el código:

Código Javascript:
Ver original
  1. <script language="javascript">
  2. //Variables que determinan el total de horas, minutos y segundos para la cuenta atrás
  3. toHour=1;
  4. toMinute=0;
  5. toSecond=0;
  6.  
  7. //Cuenta atrás
  8. function countDown()
  9. {
  10. toSecond=toSecond-1;
  11. if(toSecond<0)
  12. {
  13. toSecond=59;
  14. toMinute=toMinute-1;
  15. }
  16. form.second.value=toSecond;
  17.  
  18. if(toMinute<0)
  19. {
  20. toMinute=59;
  21. toHour=toHour-1;
  22. }
  23. form.minute.value=toMinute;
  24.  
  25. form.hour.value=toHour;
  26. if(toHour<0)
  27. {
  28. //Final
  29. form.second.value=0;
  30. form.minute.value=0;
  31. form.hour.value=0;
  32. }else{
  33. setTimeout("countDown()",1000);
  34. }
  35. }
  36. </script>

Y aquí el HTML (Incluído en el mismo documento)

Código HTML:
Ver original
  1. <style type="text/css">
  2. .form_input
  3. {
  4. font-family: Verdana;
  5. font-size: 12;
  6. color: #ffffff;
  7. border-width: 0;
  8. background-color: #000077;
  9. text-align: right;
  10. }
  11. </head>
  12.  
  13. <form name="form">
  14. Tiempo restante:
  15. <input type="text" size="5" class="form_input" name="hour" disabled>:
  16. <input type="text" size="5" class="form_input" name="minute" disabled>:
  17. <input type="text" size="5" class="form_input" name="second" disabled>
  18. <input type="button" name="empezar" id="empezar" value="Empezar" onclick="countDown()"/>
  19. </form>

¿Alguien que me ayude? :DD

Gracias
  #2 (permalink)  
Antiguo 02/08/2015, 19:00
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Botón "parar" para un temporizador y recibir una hora

Puedes detener el proceso con el método clearTimeout. Lee la documentación para que veas cómo implementarlo.

Lo otro puedes hacerlo utilizando una función que se ejecute ya sea cuando se escriba el dato en el campo o pulsando un botón. Busca en la web información sobre los eventos oninput y onclick.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 02/08/2015, 19:12
Avatar de OPMUANRK  
Fecha de Ingreso: diciembre-2014
Mensajes: 52
Antigüedad: 9 años, 4 meses
Puntos: 1
Exclamación Respuesta: Botón "parar" para un temporizador y recibir una hora

Gracias Alexis, checaré el enlace, y mientras, lo de los valores, lo i tenté hacer con un textfield y un botón, y que en la línea donde está la variable "toHour" obtenga su valor con un getElementbyId[...] y no lo tomó (y sí, al botón le dí el valor para que funcionara según yo) así que busqué pero nadie hace algo igual, jajaja
  #4 (permalink)  
Antiguo 02/08/2015, 19:50
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Botón "parar" para un temporizador y recibir una hora

Lo segundo no es difícil:

Código HTML:
Ver original
  1. <input type = "text" id = "foo" value = "bar" />
  2. <button onclick = "valor('foo')">Mostrar valor</button>

Código Javascript:
Ver original
  1. function valor(id){
  2.     var elValor = document.getElementById(id).value;
  3.     alert(elValor); //Para este ejemplo, mostrará "bar"
  4. }

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 02/08/2015, 19:57
Avatar de OPMUANRK  
Fecha de Ingreso: diciembre-2014
Mensajes: 52
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: Botón "parar" para un temporizador y recibir una hora

Gracias Alexis, probaré ese código tan pronto llegue a casa :D
  #6 (permalink)  
Antiguo 03/08/2015, 00:01
Avatar de OPMUANRK  
Fecha de Ingreso: diciembre-2014
Mensajes: 52
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: Botón "parar" para un temporizador y recibir una hora

No me funcionó, la variable "toHour" no toma ningún valor...
  #7 (permalink)  
Antiguo 03/08/2015, 09:54
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Botón "parar" para un temporizador y recibir una hora

Algo estarás haciendo mal. Vuelve a revisar tu código y corrige el problema, esa ya es tarea tuya.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 04/08/2015, 21:52
Avatar de OPMUANRK  
Fecha de Ingreso: diciembre-2014
Mensajes: 52
Antigüedad: 9 años, 4 meses
Puntos: 1
Exclamación Respuesta: Botón "parar" para un temporizador y recibir una hora

Ya ha quedado, por si alguien quiere saber:

En javascript, la variable "toHour" será cambiada en el inicio:
Código Java:
Ver original
  1. var toHour;
  2. onload=function(){
  3.     var hora=document.getElementsByName('horas')[0];   
  4.     toHour=hora.value;
  5.     hora.onchange=arguments.callee;
  6. }

Se le agrega "var" para que pueda reconocerla como variable, y después se le agrega una función, va a tomar el valor de un campo de texto y se le asignará ese valor a la variable "toHour":

Código HTML:
Ver original
  1. Horas deseadas:
  2. <input type = "text" id = "hora" name="horas" autocomplete="off" size="10"/>

¡Y listo! Le doy clic en "Empezar" y ya se ponen.
  #9 (permalink)  
Antiguo 05/08/2015, 00:39
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Botón "parar" para un temporizador y recibir una hora

Enhorabuena por haber logrado resolver tu problema. Te dejo +1 por lograrlo y compartir la respuesta.

Solo para seguir con las recomendaciones del estándar ECMAScript, te daré un par de sugerencias:

Ya no utilices arguments.callee pues su uso ya no es recomendado. En su lugar, usa una función nombrada.

Código Javascript:
Ver original
  1. function nombreDeLaFunción(){
  2.     /* Instrucciones */
  3. }

Y para delegar eventos, utiliza el método .addEventListener(). La forma que usas tiene la ventaja de ser cross-browser, pero el estándar ahora recomienda usar el método que te mencioné y que tiene una manera de implementarse para ser cross-browser.

Código Javascript:
Ver original
  1. elemento.addEventListener("evento", función, captura /* Se recomienda que sea false */);

Cualquier duda, consulta los enlaces que dejé; ahí está todo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #10 (permalink)  
Antiguo 05/08/2015, 01:03
Avatar de OPMUANRK  
Fecha de Ingreso: diciembre-2014
Mensajes: 52
Antigüedad: 9 años, 4 meses
Puntos: 1
Respuesta: Botón "parar" para un temporizador y recibir una hora

Gracias Alexis, lo tomaré en cuenta :)

Etiquetas: javascript+html, temporizador
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:39.