Quiero usar un temporizador de cuenta regresiva simple que comience a los 30 segundos desde que se ejecuta la función y termine en 0. Sin milisegundos. ¿Cómo se puede codificar?
jquery
timer
counter
setinterval
clearinterval
Miguel
fuente
fuente
Escribí este script hace algún tiempo:
Uso:
fuente
myCounter.stop();
Hasta ahora, las respuestas parecen depender del código que se ejecuta instantáneamente. Si configura un temporizador para 1000 ms, en realidad será alrededor de 1008.
Así es como debes hacerlo:
Para usar, llame al:
fuente
Aquí hay otro si alguien necesita uno por minutos y segundos:
fuente
setTimeout(Decrement, 1000)
es preferible. stackoverflow.com/questions/6232574/…fuente
Math.floor
, noMath.round
Acabo de modificar la respuesta de @ ClickUpvote :
Puede usar IIFE (Expresión de función invocada inmediatamente) y recursividad para hacerlo un poco más fácil:
Mostrar fragmento de código
fuente
Al ampliar la respuesta aceptada, su máquina se va a dormir, etc. puede retrasar el funcionamiento del temporizador. Puede obtener un tiempo real, a costa de un pequeño procesamiento. Esto le dará un verdadero tiempo restante.
fuente
Puede hacer lo siguiente con JS puro. Solo necesita proporcionar la función con la cantidad de segundos y hará el resto.
fuente
Basado en la solución presentada por @Layton Everson, desarrollé un contador que incluye horas, minutos y segundos:
fuente
fuente
Mi solución funciona con formatos de fecha y hora de MySQL y proporciona una función de devolución de llamada. en cumplimiento. Descargo de responsabilidad: funciona solo con minutos y segundos, ya que esto es lo que necesitaba.
fuente
Por el bien de las actuaciones, ahora podemos usar de forma segura requestAnimationFrame para un bucle rápido, en lugar de setInterval / setTimeout.
Al usar setInterval / setTimeout, si una tarea de bucle tarda más tiempo que el intervalo, el navegador simplemente extenderá el bucle de intervalo para continuar con la representación completa. Esto está creando problemas. Después de minutos de sobrecarga setInterval / setTimeout, esto puede congelar la pestaña, el navegador o toda la computadora.
Los dispositivos de Internet tienen una amplia gama de prestaciones, por lo que es bastante imposible codificar un intervalo de tiempo fijo en milisegundos.
Usando el objeto Fecha , para comparar la Fecha de inicio de Época y la actual. Esto es mucho más rápido que todo lo demás, el navegador se encargará de todo, a una velocidad constante de 60FPS ( 1000/60 = 16.66ms por cuadro ), un cuarto de parpadeo , y si la tarea en el bucle requiere más que eso , el navegador soltará algunos repintes.
Esto permite un margen antes de que nuestros ojos se den cuenta ( Humano = 24FPS => 1000/24 = 41.66ms por cuadro = animación fluida!)
https://caniuse.com/#search=requestAnimationFrame
fuente