entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Reloj cuenta atrás con javascript

Hola. Tengo un código para realizar una cuenta atrás con javascript, pero no se por que, no me funciona. Pongo el código:

(function($) {
    $.fn.countdown = function(options, callback) {

        //custom 'this' selector
        thisEl = $(this);

        //array of custom settings
        var settings = { 
            'date': "2016-01-30 12:12:12",
            'format': "yyyy-mm-dd'T'HH:MM:ss"
        };

        //append the settings array to options
        if(options) {
            $.extend(settings, options);
        }

        //main countdown function
        function countdown_proc() {

            eventDate = Date.parse(settings['date']) / 1000;
            currentDate = Math.floor($.now() / 1000);

            if(eventDate <= currentDate) {
                callback.call(this);
                clearInterval(interval);
            }

            seconds = eventDate - currentDate;

            days = Math.floor(seconds / (60 * 60 * 24)); //calculate the number of days
            seconds -= days * 60 * 60 * 24; //update the seconds variable with no. of days removed

            hours = Math.floor(seconds / (60 * 60));
            seconds -= hours * 60 * 60; //update the seconds variable with no. of hours removed

            minutes = Math.floor(seconds / 60);
            seconds -= minutes * 60; //update the seconds variable with no. of minutes removed

            //conditional Ss
            if (days == 1) { thisEl.find(".timeRefDays").text("day"); } else { thisEl.find(".timeRefDays").text("days"); }
            if (hours == 1) { thisEl.find(".timeRefHours").text("hour"); } else { thisEl.find(".timeRefHours").text("hours"); }
            if (minutes == 1) { thisEl.find(".timeRefMinutes").text("minute"); } else { thisEl.find(".timeRefMinutes").text("minutes"); }
            if (seconds == 1) { thisEl.find(".timeRefSeconds").text("second"); } else { thisEl.find(".timeRefSeconds").text("seconds"); }

            //logic for the two_digits ON setting
            if(settings['format'] == "on") {
                days = (String(days).length >= 2) ? days : "0" + days;
                hours = (String(hours).length >= 2) ? hours : "0" + hours;
                minutes = (String(minutes).length >= 2) ? minutes : "0" + minutes;
                seconds = (String(seconds).length >= 2) ? seconds : "0" + seconds;
            }

            //update the countdown's html values.
            if(!isNaN(eventDate)) {
                thisEl.find(".days").text(days);
                thisEl.find(".hours").text(hours);
                thisEl.find(".minutes").text(minutes);
                thisEl.find(".seconds").text(seconds);
            } else { 
                alert("Invalid date. Here's an example: 12 Tuesday 2012 17:30:00");
                clearInterval(interval); 
            }
        }

        //run the function
        countdown_proc();

        //loop the function
        interval = setInterval(countdown_proc, 1000);

    }
}) (jQuery);

Creo entender el código, pero no se por que no me funciona.
En el array setting, en date pongo la fecha del evento, y en format el formato de la fecha del evento. De esta manera me sale 537 dias cuando debarían ser unos 10 días....... No sería así???

0voto

bl4z3r comentado

¿Probaste con algo mas sencillo como jQuery.countdown?

1 Respuesta

0voto

nachito777sk Puntos2050

Ya descubrí el problema, en el archivo main.js tenía una fecha abierta con la función, que hacía que cogiese esa por defecto. No la había visto y me estaba volviendo loco.
Problema solucionado.

1voto

Peter comentado

Si pones la parte del código con la solución, mejor :)

0voto

nachito777sk comentado

Ok. Aquí va:
Yo ponía en el index.php la función con la fecha que quería que era este:

<script src="js/countdown.js"></script>
    <script>
        $(document).ready(function(){
            $("#countdown").countdown({
                date: "1 February 2016 12:00:00",
                format: "on"
            },
            function() {
                // callback function
            });
        });
    </script>

Y resulta que en el archivo main.js había una llamada a esta misma función. Totalmente la misma, con una fecha del 2017 que eran los 534 días que me salían todo el rato.........
Lo he solucionado quitando la función del archivo main.js, para controlarlo en el index.php, ya que la fecha la actualizaré a través de una BBDD, para poder ir cambiando la fecha de cuenta atrás.
Saludos.

0voto

Peter comentado

Gracias, por favor selecciona la respuesta como correcta :D

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta