es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cuenta atrás para la fecha y hora de inicio, luego cuenta atrás para la fecha y hora de finalización (jQuery)

¿Cómo puedo realizar una cuenta regresiva para una hora de inicio y luego una cuenta regresiva para una hora de finalización, usando esta biblioteca de cuenta regresiva?

La documentación dice que debo agregar un parámetro “onExpiry” para ejecutar una función de devolución de llamada, pero no importa cómo estructuro estas funciones, ya sea que comience la cuenta regresiva a “stopdate” incluso cuando “startdate” aún está en el futuro o se detiene en “00:00:00:00” y no hace nada cuando expira “startdate”.

Lo que necesito es que haga una cuenta regresiva hasta “startdate” y, cuando termine, haga una cuenta regresiva hasta “stopdate”.

function startTimers() {
  $(function() {
    $('#auction-counter').countdown({
      until: startdate,
      onExpiry: stopTimer,
      format: 'DHMS',
      padZeroes: true,
      alwaysExpire: true
    });

    function stopTimer() {
      $('#auction-counter').countdown({
        until: stopdate,
        format: 'DHMS',
        padZeroes: true,
        alwaysExpire: true
      });
    }
  });
}

El código anterior realiza una cuenta regresiva hasta “startdate”, pero luego se detiene en “00:00:00:00”.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para realizar una cuenta regresiva hasta una hora de inicio y luego contar hacia una hora de finalización utilizando esta biblioteca de cuenta regresiva, puedes agregar un parámetro onExpiry para ejecutar una función de devolución de llamada. Sin embargo, el problema con el código proporcionado es que no está estructurado correctamente para lograr el resultado deseado.

    Para hacer que funcione, debes cambiar la función stopTimer para iniciar un nuevo temporizador para la stopdate después de que el temporizador de startdate expire. Una forma de hacer esto es redefinir la función onExpiry para el temporizador de startdate para iniciar el temporizador de stopdate. Aquí tienes una versión actualizada del código:

    function startTimers() {
      $(function() {
        $('#auction-counter').countdown({
          until: startdate,
          onExpiry: startStopTimer,
          format: 'DHMS',
          padZeroes: true,
          alwaysExpire: true
        });
    
        function startStopTimer() {
          $('#auction-counter').countdown('option', { // reiniciar temporizador con nuevas opciones
            until: stopdate,
            onExpiry: null, // este temporizador no tiene comportamiento de expiración
            format: 'DHMS',
            padZeroes: true,
            alwaysExpire: true
          }).countdown('start'); // iniciar nuevo temporizador
        }
      });
    }
    

    Este código define startStopTimer para iniciar la cuenta regresiva de stopdate cuando la cuenta regresiva de startdate expire. Utiliza countdown('option', {...}) para modificar las opciones del temporizador y countdown('start') para iniciar la nueva cuenta regresiva.

    Con este código actualizado, el temporizador primero hará una cuenta regresiva hasta startdate, luego hará una cuenta regresiva hasta stopdate después de que el temporizador de startdate expire.

Comments are closed.