Code For A Simple JavaScript Countdown Timer?


Answer :

var count=30;  var counter=setInterval(timer, 1000); //1000 will  run it every 1 second  function timer() {   count=count-1;   if (count <= 0)   {      clearInterval(counter);      //counter ended, do something here      return;   }    //Do code for showing the number of seconds here } 

To make the code for the timer appear in a paragraph (or anywhere else on the page), just put the line:

<span id="timer"></span> 

where you want the seconds to appear. Then insert the following line in your timer() function, so it looks like this:

function timer() {   count=count-1;   if (count <= 0)   {      clearInterval(counter);      return;   }   document.getElementById("timer").innerHTML=count + " secs"; // watch for spelling } 

I wrote this script some time ago:

Usage:

var myCounter = new Countdown({       seconds:5,  // number of seconds to count down     onUpdateStatus: function(sec){console.log(sec);}, // callback for each second     onCounterEnd: function(){ alert('counter ended!');} // final action });  myCounter.start(); 

function Countdown(options) {   var timer,   instance = this,   seconds = options.seconds || 10,   updateStatus = options.onUpdateStatus || function () {},   counterEnd = options.onCounterEnd || function () {};    function decrementCounter() {     updateStatus(seconds);     if (seconds === 0) {       counterEnd();       instance.stop();     }     seconds--;   }    this.start = function () {     clearInterval(timer);     timer = 0;     seconds = options.seconds;     timer = setInterval(decrementCounter, 1000);   };    this.stop = function () {     clearInterval(timer);   }; } 

So far the answers seem to rely on code being run instantly. If you set a timer for 1000ms, it will actually be around 1008 instead.

Here is how you should do it:

function timer(time,update,complete) {     var start = new Date().getTime();     var interval = setInterval(function() {         var now = time-(new Date().getTime()-start);         if( now <= 0) {             clearInterval(interval);             complete();         }         else update(Math.floor(now/1000));     },100); // the smaller this number, the more accurate the timer will be } 

To use, call:

timer(     5000, // milliseconds     function(timeleft) { // called every step to update the visible countdown         document.getElementById('timer').innerHTML = timeleft+" second(s)";     },     function() { // what to do after         alert("Timer complete!");     } ); 

Comments

Popular posts from this blog

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?