如何加快倒计时?

时间:2015-01-17 14:23:16

标签: javascript html countdowntimer

我正在使用Javascript进行基本的倒计时,其中倒计时从0开始然后结束到24,因为这是倒计时的想法,我想在24结束。这里是代码:

var count=0;

var counter=setInterval(timer, 50); //1000 will  run it every 1 second

function timer()
{
  count=count+1;
  if (count >= 24)
  {
     clearInterval(counter);
     //counter ended, do something here
      document.getElementById("countdown").innerHTML=24 ;

     return;
  }

  //Do code for showing the number of seconds here
     document.getElementById("countdown").innerHTML=count ; // watch for      spelling

}

现在的问题是,如果您注意到这一点,倒计时发生得非常快,这是预期的效果。然而问题是这样,有没有办法有一个平稳的缓和类型效果,倒计时开始缓慢,然后到最后加速?如何实现这种效果?

感谢您的回复。

编辑:以下是the fiddle,了解行动中的倒计时并获得更深入的了解。

3 个答案:

答案 0 :(得分:3)

您需要使用setTimeout而不是setInterval和setTimeout的另一个变量。

    var count=0;
    var speed = 1000;
    timer();

    function timer()
    {
      count++;

      //Do code for showing the number of seconds here
         document.getElementById("countdown").innerHTML=count ; // watch for      spelling

      if (count >= 24)
      {
         return;
      }

      speed = speed / 6 * 5; // or whatever
      setTimeout(timer, speed);

    }

小提琴:http://jsfiddle.net/4nnms1gz/2/

答案 1 :(得分:1)

使用仅运行一次的超时,然后再添加额外时间并再次运行超时,直到达到24。

var count=0;
var ms = 200;
var step = 5;
var counter=setTimeout(timer, ms); //1000 will  run it every 1 second

function timer()
{
  count=count+1;
  if (count <= 24)
  {
    //Do code for showing the number of seconds here
     document.getElementById("countdown").innerHTML=count ; // watch for spelling
     ms = ms - step;
     counter = setTimeout(timer, ms);

  }

}

答案 2 :(得分:0)

使用setTimeout可以让你更好地控制你的计数器。这是一个可以处理你的计数器速度的工作示例。每次调用time函数时,你会给你30ms到70ms的时间。

&#13;
&#13;
var count=0;
var loop=1000;
var interval;

var text=document.getElementById('countdown');
var range=document.getElementById('range');
var btn=document.getElementById('btn');
var span=document.getElementById('val');

range.addEventListener('change',function(e){
   span.innerHTML=range.value+' ms';
});
btn.addEventListener('click',function(e){
   timer(parseInt(range.value));
 
});

function timer(time)
{
  
   console.log(time);
  if (count < 24)
  {
     count=count+1;
     text.value=count;
	 
	  
     loop-=time;
	 
	 interval=setTimeout(function(){
                            timer(time);
                         },loop);
	 
     if(count>=24){
	   clearTimeout(interval);
	   return;
	 }
  }
  

}
&#13;
<input type='text' id='countdown' value='0'></br>
<input type='range' id='range' max='70' min='30' value='30' >increase by:<span id='val'></span></br>

<input type='button' value='start' id='btn' ></br>
&#13;
&#13;
&#13;