Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    New to the CF scene
    Join Date
    May 2012
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Exclamation help with count up/down timer

    OK so I have a timer and it counts up and down fine, but it resets everytimes the page refreshes, I need it not to refresh every time can you help.

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <title>JavaScript CountUp/CountDown Timer - Praveen Lobo</title>
    <script type="text/javascript">
    /**********************************************************************************************
    * CountUp/CountDown Timer script by Praveen Lobo
    * (http://PraveenLobo.com/techblog/javascript-countup-countdown-timer/)
    * This notice MUST stay intact(in both JS file and SCRIPT tag) for legal use.
    * http://praveenlobo.com/blog/disclaimer/
    **********************************************************************************************/
    function Counter(initDate, id){
        this.counterDate = new Date(initDate);
        this.countainer = document.getElementById(id);
        this.numOfDays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
        this.borrowed = 0, this.years = 0, this.months = 0, this.days = 0;
        this.hours = 0, this.minutes = 0, this.seconds = 0;
        this.updateNumOfDays();
        this.updateCounter();
    }
     
    Counter.prototype.updateNumOfDays=function(){
        var dateNow = new Date();
        var currYear = dateNow.getFullYear();
        if ( (currYear % 4 == 0 && currYear % 100 != 0 ) || currYear % 400 == 0 ) {
            this.numOfDays[1] = 29;
        }
        var self = this;
        setTimeout(function(){self.updateNumOfDays();}, (new Date((currYear+1), 1, 2) - dateNow));
    }
     
    Counter.prototype.datePartDiff=function(then, now, MAX){
        var diff = now - then - this.borrowed;
        this.borrowed = 0;
        if ( diff > -1 ) return diff;
        this.borrowed = 1;
        return (MAX + diff);
    }
     
    Counter.prototype.calculate=function(){
        var futureDate = this.counterDate > new Date()? this.counterDate : new Date();
        var pastDate = this.counterDate == futureDate? new Date() : this.counterDate;
        this.seconds = this.datePartDiff(pastDate.getSeconds(), futureDate.getSeconds(), 60);
        this.minutes = this.datePartDiff(pastDate.getMinutes(), futureDate.getMinutes(), 60);
        this.hours = this.datePartDiff(pastDate.getHours(), futureDate.getHours(), 24);
        this.days = this.datePartDiff(pastDate.getDate(), futureDate.getDate(), this.numOfDays[futureDate.getMonth()]);
        this.months = this.datePartDiff(pastDate.getMonth(), futureDate.getMonth(), 12);
        this.years = this.datePartDiff(pastDate.getFullYear(), futureDate.getFullYear(), 0);
    }
     
    Counter.prototype.addLeadingZero=function(value){
        return value < 10 ? ("0" + value) : value;
    }
     
    Counter.prototype.formatTime=function(){
        this.seconds = this.addLeadingZero(this.seconds);
        this.minutes = this.addLeadingZero(this.minutes);
        this.hours = this.addLeadingZero(this.hours);
    }
     
    Counter.prototype.updateCounter=function(){
        this.calculate();
        this.formatTime();
        this.countainer.innerHTML ="<strong>" + this.years + "</strong> " + (this.years == 1? "year" : "years") +
            " <strong>" + this.months + "</strong> " + (this.months == 1? "month" : "months") +
            " <strong>" + this.days + "</strong> " + (this.days == 1? "day" : "days") +
            " <strong>" + this.hours + "</strong> " + (this.hours == 1? "hour" : "hours") +
            " <strong>" + this.minutes + "</strong> " + (this.minutes == 1? "minute" : "minutes") +
            " <strong>" + this.seconds + "</strong> " + (this.seconds == 1? "second" : "seconds");
        var self = this;
        setTimeout(function(){self.updateCounter();}, 1000);
    }
     
    window.onload=function(){ new Counter(((new Date()).getTime()+10000), 'counter'); }
    
    </script>
    </head>
    <body>
    <div id="counter">Contents of this DIV will be replaced by the timer</div>
    </body>
    </html>
    Last edited by frencsday; 05-26-2012 at 08:11 PM.

  • #2
    Supreme Master coder! Philip M's Avatar
    Join Date
    Jun 2002
    Location
    London, England
    Posts
    18,147
    Thanks
    203
    Thanked 2,547 Times in 2,525 Posts
    Have you tried asking the auhtor?

    All the code given in this post has been tested and is intended to address the question asked.
    Unless stated otherwise it is not just a demonstration.

  • #3
    New to the CF scene
    Join Date
    May 2012
    Posts
    2
    Thanks
    0
    Thanked 0 Times in 0 Posts
    I am in process of contacting the author now.


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •