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

I want to create a countdown from 50 down to 1, but I don't want to count down the same amount of time between each number

本文关键字:倒计时 我不想 数字 之间 时间 一个 创建      更新时间:2023-09-26

我想创建一个从 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 秒的速度,以及如何为其添加一点随机性?

至于更改间隔时间跨度,则无法使用 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

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
})();

您必须改变间隔时间。创建一个新变量并在...嗯,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) ); 

没有测试这个编辑:嗯,它对我有好处。