首页 > 解决方案 > JS Math setinterval 一个范围内的随机数

问题描述

我有一个默认数字,在页面加载后,每一秒后,我都必须在此范围内添加一个数字:(0.02 - 0.006)。

这是代码:

var amount = 44522.1234;
setTimeout(start, 1000);

var i = Math.floor(Math.random() * (0.02 - 0.006) + 0.006);
console.log("initial" + i);
var num = document.getElementById('total');

function start() {
  setInterval(increase, 1000);
}

function increase() {
  if (i < amount) {
    i++;
    console.log(i);
    num.innerText = amount + i;
  }
}
<div id="total"></div>

上面的代码只增加1每秒的数量,而不是增加指定范围内的数字。

标签: javascript

解决方案


Math.floor将截断数字,因此它永远不会在您想要的范围内。此外,您应该每秒生成一个新的随机数,而不是增加最初生成的数字。

var amount = 44522.1234;
setTimeout(start, 1000);

var num = document.getElementById('total');

function start() {
  setInterval(increase, 1000);
}

function increase() {
  var i = Math.random() * (0.02 - 0.006) + 0.006;
  console.log("adding",i);
  amount += i;
  num.textContent = amount;
}
<div id="total"></div>


推荐阅读