我想创建一个从50减到1的倒计时,但我不想倒数每个数字之间相同的时间

时间:2013-10-06 23:32:06

标签: javascript html

我想创建一个从50减少到1的倒计时,但我不想倒数每个数字之间相同的时间..如果这是50秒,我不希望它倒计时每秒一个数字。我正在尝试创建一个具有一点随机性的倒计时,所以可能需要2秒才能到达下一个数字或有时.5秒。我试图一直这样做到最后10秒,它会在计数器停在数字1之前减速一点。

继承我的HTML:

<span id="count">50</span>

Javascript:

sec = 50;

interval = setInterval(function () {
  sec--;
  document.getElementById('count').innerHTML = sec;

  if (sec == 1) {
    clearInterval(interval);
  }

}, 1000); 

JSFiddle:http://jsfiddle.net/aVrPG/

如何让它减慢最后10秒,以及如何为它添加一些随机性?

3 个答案:

答案 0 :(得分:1)

就更改间隔时间而言,使用setInterval无法做到这一点。你需要使用setTimeout。

sec = 50;

function interval(timespan){
    setTimeout(function () {
      sec--;
      document.getElementById('count').innerHTML = sec;
        if (sec > 10){
            interval(1500);
        }
      if (sec > 1) {
        interval(1000);
  }

    }, timespan); 
}
interval(1000)

我不确定你想要随机性的地方。但这应该指向正确的方向。 JSFIDDLE

答案 1 :(得分:0)

var sec = 50;

function execute() {
  document.getElementById("count").innerHTML = sec;
}

(function loop() {
  if(sec-- == 0) {
    return // stop when we reach 0
  }

  setTimeout(function() {
    execute();
    loop() 
  }, Math.round(Math.random() * 1E3) + (sec <= 10 ? 2E3 : 500))
                // random 1000 or 0  +  2000 if sec <=10 or 500 otherwise
})();

答案 2 :(得分:-1)

您必须改变间隔时间。创建一个新变量并在...... hm,500和2000之间设置一个随机值?并且至少要在最后10秒“减速”。 只需使用if子句。

试试这个

sec = 50;

interval = setInterval(function () {
 sec--;
 document.getElementById('count').innerHTML = sec;

  if (sec == 1) {
   clearInterval(interval);
  }

}, (sec < 11) ? Math.floor(Math.random()*1000 + 500): Math.floor(Math.random()*1000 + 1500) ); 

没试过这个 编辑:嗯,这对我有用。