【问题标题】:Every 1 second increase the value with a random number using decimal numbers每 1 秒增加一个使用十进制数的随机数的值
【发布时间】:2018-10-16 10:06:26
【问题描述】:

所以我试图以 1 秒的间隔增加一个数字的值,其中一个十进制数介于(0.01 和 0.05)之间,但我似乎无法弄清楚这一点。

它唯一能做的就是显示 0.01 到 0.05 之间的数字,而不是把它们加起来成为一个整数。

setInterval (function myFunction() {
  var number = 0;
  document.getElementById("computerScore").innerHTML = number + 
  Math.floor((Math.random() * 5) + 1)/100;
}, 1000)

<b>computer score:</b><p id="computerScore">0</p>

【问题讨论】:

    标签: javascript string dom numbers setinterval


    【解决方案1】:

    您的问题是您在每次执行中都将number 设置为0,而它应该是当前值。

    你需要给它分配Number(document.getElementById("computerScore").textContent),所以它会随着添加的随机数不断更新。

    注意,我在这里推荐使用textContent,因为它只包含元素的文本内容,避免使用 HTML 元素。

    setInterval (function myFunction() {
      var number = Number(document.getElementById("computerScore").textContent);
      document.getElementById("computerScore").textContent= number + 
      Math.floor((Math.random() * 5) + 1)/100;
    }, 1000)
    

    演示:

    setInterval (function myFunction() {
      var number = Number(document.getElementById("computerScore").textContent);
      document.getElementById("computerScore").textContent = number + 
      Math.floor((Math.random() * 5) + 1)/100;
    }, 1000)
    &lt;b&gt;computer score:&lt;/b&gt;&lt;p id="computerScore"&gt;0&lt;/p&gt;

    【讨论】:

    • 谢谢它的工作!非常有见地,没有意识到我需要将 Number 分配给文档,但现在有意义
    • @karagkalex 是的,我们使用了 Number 构造函数来解析 HTML 字符串中的数字。
    【解决方案2】:

    您需要从您的分数中检索先前的值并将您的随机数添加到其中:

    PS:我添加了.toFixed(2) 以将您的结果限制为两位小数。

    let score = document.getElementById("computerScore");
    
    setInterval (function myFunction() {
      score.innerHTML = (+score.innerHTML + Math.floor((Math.random() * 5) + 1)/100).toFixed(2);
    }, 1000)
    &lt;b&gt;computer score:&lt;/b&gt;&lt;p id="computerScore"&gt;0&lt;/p&gt;

    【讨论】:

    • 谢谢它的工作!了解 .toFixed 真的很有帮助
    【解决方案3】:

    每次调用函数时将number设置为0,应在区间外定义number

    var number = 0;
    setInterval(function myFunction() {
        document.getElementById("computerScore").innerHTML = number +
            Math.floor((Math.random() * 5) + 1) / 100;
    }, 1000)
    

    【讨论】:

      【解决方案4】:

      你需要在setTimeout之外声明数字:

      var number = 0;
      setInterval (function myFunction() {
        number = number + 
        Math.floor((Math.random() * 5) + 1)/100;
        document.getElementById("computerScore").innerHTML = number;
      }, 1000)
      

      JSFiddle

      【讨论】:

      • 感谢您的成功!没有意识到我需要在函数之外声明它,现在有意义
      【解决方案5】:

      你可以试试这样的。您忘记将数字设置为 0。然后您必须使用您获得的随机值增加您的数字。

      https://codepen.io/anon/pen/dgJpep

      JS :
      
      
        var number = 0;
      
      function check(){
      
        setInterval(function(){
          number = number + Math.floor((Math.random() * 5) + 1)/100;
        }, 3000);
      }
      
      check();
      
      setInterval(function(){
        document.getElementById('computerScore').innerHTML = number;
      });
      

      让我知道它是否适合你!

      【讨论】:

        猜你喜欢
        • 2015-09-13
        • 1970-01-01
        • 2010-10-05
        • 2015-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-06
        相关资源
        最近更新 更多