¿Podrías ayudarme?
tengo un pequeño script con varios setTimeout, 3 concretamente, que no consigo enlazar correctamente para que cuando acabe uno se ejecute el siguiente.
muchas gracias
![sonriente](http://static.forosdelweb.com/fdwtheme/images/smilies/smile.png)
| |||
setTimeouts consecutivos Hola derkenuke, ¿Podrías ayudarme? tengo un pequeño script con varios setTimeout, 3 concretamente, que no consigo enlazar correctamente para que cuando acabe uno se ejecute el siguiente. muchas gracias ![]() |
| ||||
![]() Bienvenido, juliorjulior. Para hacer preguntas es preferible que lo hagas en un nuevo tema. Véase: http://www.forosdelweb.com/f40/polit...el-web-101485/
__________________ Por favor, antes de preguntar, revisa la Guía para realizar preguntas. |
| |||
![]() Hola el_javi, Tengo reloj de cuenta atrás con setTimeout. Es un script sencillo. Para una vez no hay problema, pero para ejecutar una secuencia de cuenta atras de 20", después 10" y finalmente otros 20", no consigo que se ejecute secuencialmente. Creo que la solución podría estar en la programación hecha en este tema, pero no llego a comprenderlo bien y como encajar la lógica en mi script. muchas gracias |
| ||||
![]() No entendí lo que estás queriendo hacer, ¿podrías poner un ejemplo claro?. Porque si lo que quieres es sólo hacer 3 setTimeout(), solo espera a que se ejecute el primero para llamar al segundo y después al tercero. P.S.: Como ya te dije, es aconsejable que crees un nuevo tema para nuevas consultas, ten eso en cuenta para la próxima vez ![]()
__________________ Por favor, antes de preguntar, revisa la Guía para realizar preguntas. |
| |||
![]() Hola David, He intentado hacer lo que dices pero no se que estoy haciendo mal. La secuencia que tiene que aparecer en pantalla es 20 seg, despues contar 10 seg. y finalmente otros 20 y acabar. ¿Cómo hago para enlazar 3 setTimeout secuencialmente? muchas gracias |
| ||||
![]() ¿Cómo intentaste hacerlo?. Coloca el código con que estás intentando para que veamos cuál es el error.
__________________ Por favor, antes de preguntar, revisa la Guía para realizar preguntas. |
| |||
Respuesta: aporte: programacion secuencial Hola David, os mando con lo que estoy trabajando. He quitado todo lo que estaba probando porque revisando la ejecucion con firefox (firebug) me fallaba. Ahora solo calcula una cuenta atras y no se como cambiar la logica. He probado incluyendo las siguientes llamadas despues de showCountDown() en la funcion startTimer3h pero no funciona. muchas gracias. julior ![]() <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Temporizador de cuenta atrás</title> <style type="text/css"> <!-- body { font: 100% Verdana, Arial, Helvetica, sans-serif; background: #777777; margin: 0; padding: 0; text-align: center; color: #000000; } #contenedor { margin-top: 60px; width:100%; margin: 0 auto; } #formulario { height:auto; width:auto; } #formDigitos { font-size: 500%; /*1800 es el valor final posible */ font-style: normal; font-family: LED, LEDFont, LcdD; text-align:center; /*font-weight:bold;*/ font-stretch: expanded; /* color: #EDFEFE;*/ /*color: #F0F8FF;*/ color: #c3c3c3; /*font-weight: bolder;*/ background-color: transparent; border-color: transparent; border: 0; width:500; height:280; } </style> <script languaje="JavaScript"> <!-- var running = false var endTime = null var timerID = null // var showhour = true var showhour = false // ahora asi para probar 20 //calculos de milisegundos para calcular horas y minutos var unMinuto = 60 * 1000 var unaHora = unMinuto * 60 function startTimer3h() { running = true now = new Date() now = now.getTime() endTime = now + (1000 * 10) //prueba showCountDown() } function showCountDown() { var now = new Date() now = now.getTime() if (endTime - now <= 0) { stopTimer() alert ("Fin de la cuenta atrás...") } else { var delta = new Date(endTime - now) var theHor = delta.getHours() var theMin = delta.getMinutes() var theSec = delta.getSeconds() if (!showhour) { var theTime = theMin } else { var theTime = theHor theTime += ((theMin < 10) ? ":0": ":") + theMin } theTime += ((theSec < 10) ? ":0": ":") + theSec document.forms[0].timerDisplay.value = theTime if (running) { timerID = setTimeout("showCountDown()",1000) } } } function stopTimer() { // alert ("vamos a parar...") clearTimeout(timerID) running = false document.forms[0].timerDisplay.value = "00:00" } //--> </script> </head> <body> <div id="contenedor"> <h3>Cuenta atrás 10 segundos + 5 segundos + 10 segundos</h3></br> <form id="formulario"> <input type="button" name="startTime" value="Comenzar" onClick="startTimer3h()"> <input type="button" name="clearTime" value="borrar contador" onClick="stopTimer()"></br></br> <input size="3" id="formDigitos" type="text" name="timerDisplay" value=""> </br></br> </form> <!-- FIN id="contenedor">--></div> </body> </html> |
| ||||
Respuesta: aporte: programacion secuencial Hola: Es un hilo muy viejo, y no sabía lo que eran los closures, así que probablemente podría mejorar el código ahora mismo. Si tienes que hacer 20 segundos, después 10 y luego otros 20 lo más cómodo es llamar directamente al de 20, y programar un setTimeout para las acciones siguientes dentro de 10 y 30 segundos respectivamente. A ver si con esto lo entiendes mejor. Al inicio de la aplicación ejecutaríamos estas 3 cosas:
Es cómodo si sabes cuánto van a durar las funciones. Sino es muuucho más complicado, hay que jugar con una variable que habría que comprobar si cambia de estado cada muy poco (que es básicamente lo que hacía mi comprobarSi()). Un saludo ![]()
__________________ - Haz preguntas inteligentes, y obtendrás más y mejores respuestas. - Antes de postearlo Inténtalo y Búscalo. - Escribe correctamente tus mensajes. |