0

我想创建一个从 50 倒计时到 1 的倒计时,但我不想倒计时每个数字之间的相同时间量。如果这是 50 秒,我不希望它每次倒计时一个数字第二。我正在尝试创建一个带有一点随机性的倒计时,所以可能需要 2 秒才能到达下一个数字,有时甚至需要 0.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 秒的速度,以及如何为其添加一些随机性?

4

3 回答 3

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

于 2013-10-06T23:45:27.180 回答
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
})();
于 2013-10-06T23:38:07.793 回答
-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) ); 

没有测试这个 编辑:嗯,它对我很有用。

于 2013-10-06T23:38:34.947 回答