JQuery:使用 setInterval 每隔随机的秒数显示文本

标签 jquery setinterval

以下代码每秒显示从 1 到 10 的数字:

(function() {
  var timesRun = 0;
  var runLimit = 10;

  i = 0;

  setInterval(function() {

    if (timesRun < runLimit) {
      timesRun += 1;

      $('#changing-number').fadeOut(function() {
        $(this).html(timesRun).fadeIn();
      });
    }
  }, 1000);
})();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<span id="changing-number">0</span> out of 10 numbers have been displayed.

但是,我不希望每个数字每秒都准确出现。我想要大约 1 到 3 秒的间隙,每次随机改变。例如,第一个数字可能需要 2.2 秒才能显示,下一个数字可能需要另外 1.4 秒才能显示,下一个可能需要另外 2.9 秒才能显示,等等。 基本上,我不知道用什么来代替函数中的“1000”,以确保每个数字需要随机的时间才能出现。

最佳答案

使用setTimeout()运行下一次迭代,而不是setInterval(),并每次随机计算超时。

(function() {
  var timesRun = 0;
  var runLimit = 10;

  i = 0;

  function updateCounter() {
    if (timesRun < runLimit) {
      var timeout = 2000 * Math.random() + 1000; // random timeout from 1000 to 3000
      setTimeout(function() {
        $('#changing-number').fadeOut(function() {
          $(this).html(timesRun).fadeIn();
        });
        timesRun++;
        updateCounter();
      }, timeout);
    }
  }
  updateCounter();
})();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<span id="changing-number">0</span> out of 10 numbers have been displayed.

关于JQuery:使用 setInterval 每隔随机的秒数显示文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58737847/

相关文章:

javascript - 使用 jQuery 选择元素有两个特定的子元素

php - 无法访问 php $_POST 值

javascript - 如何访问executeSql函数之外的变量

javascript - 即使计时器上的数字低于 10,如何使计数器为两位数

jQuery 在具有特定名称的输入后 append div?

javascript - 禁用输入按钮

javascript - setInterval 和长时间运行的函数

javascript - javascript setInterval 和 setTimeout 'threads' 如何工作?

javascript - 通过localStorage实现StorageEvent

javascript - setInterval 'stacking' 向上