Search code examples
javascripttimerdom-eventscountdown

Error: JavaScript countdown timer does not countdown


I am trying to build a countdown timer which countdowns between two given time.

I want my timer to countdown the time between June 19, 2014 12:20:00 & June 16, 2014 12:00:00

But it does not countdown. It remains static as itself.

function timer()
{
    var now = new Date("June 16, 2014 12:00:00");
    var enddate = new Date("June 19, 2014 12:20:00");
    var totalRemains = (enddate.getTime()-now.getTime());
    if (totalRemains>1)
    {
        var RemainsSec=(parseInt(totalRemains/1000));
        var RemainsFullDays=(parseInt(RemainsSec/(24*60*60)));
        var secInLastDay=RemainsSec-RemainsFullDays*24*3600;
        var RemainsFullHours=(parseInt(secInLastDay/3600));
        if (RemainsFullHours<10){RemainsFullHours="0"+RemainsFullHours};
        var secInLastHour=secInLastDay-RemainsFullHours*3600;
        var RemainsMinutes=(parseInt(secInLastHour/60));
        if (RemainsMinutes<10){RemainsMinutes="0"+RemainsMinutes};
        var lastSec=secInLastHour-RemainsMinutes*60;
        if (lastSec<10){lastSec="0"+lastSec};
        var mcend = Date.parse("Jan 1, 2012, 00:00:00");
        var mcnow = now.getTime();
        var mc = ((mcend-mcnow)/10).toFixed(0).substr(8);
        document.getElementById('timer').innerHTML = '<p class="timeline">TIME LEFT: '+ RemainsFullHours+":"+RemainsMinutes+":"+lastSec+'</p>';
        setTimeout(timer,10);
    } 
    else {document.getElementById("timer").innerHTML = '<p class="timeline">TIME LEFT: 00:00:00</p>';}
}
                                 timer();

Here is my fiddle http://jsfiddle.net/bVCMe/


Solution

  • var t1 = new Date("June 14, 2014, 12:40:00") //end date
    var t2 = new Date("June 14, 2014, 00:00:01") //initial date
    var Seconds_Between_Dates = Math.abs((t1.getTime() - t2.getTime()) / 1000);
    timer(Seconds_Between_Dates);
    
    function timer(Seconds_Between_Dates) {
    if (Seconds_Between_Dates > 1) {
        var RemainDays = (parseInt(Seconds_Between_Dates / (24 * 60 * 60)));
        var lastDaySecs = Seconds_Between_Dates - RemainDays * 24 * 3600;
        var RemainsFullHours = (parseInt(lastDaySecs / 3600));
        if (RemainsFullHours < 10) {
            RemainsFullHours = "0" + RemainsFullHours
        };
        var secInLastHour = lastDaySecs - RemainsFullHours * 3600;
        var RemainsMinutes = (parseInt(secInLastHour / 60));
        if (RemainsMinutes < 10) {
            RemainsMinutes = "0" + RemainsMinutes
        };
           var lastSec = secInLastHour - RemainsMinutes * 60;
           if (lastSec < 10) {
            lastSec = "0" + lastSec
        };
           document.getElementById('effect').innerHTML = '<p class="timeline">TIME LEFT: ' + RemainDays + ":::::" + RemainsFullHours + ":" + RemainsMinutes + ":" + lastSec + '</p>';
        Seconds_Between_Dates = Seconds_Between_Dates - 1;
        setTimeout(function () {
            timer(Seconds_Between_Dates)
        }, 1000);
        }
    }
    

    Here is the fiddle: http://jsfiddle.net/iamsajeev/bVCMe/9/