【问题标题】:How to make a counter that adds a specific number per second using javascript?如何使用javascript制作一个每秒添加特定数字的计数器?
【发布时间】:2020-04-12 17:45:50
【问题描述】:

我有以下代码,应该每秒增加 2.6。但在第一次添加后,我得到 8。 我怎样才能解决这个问题?在这里的测试仪上它可以工作,但在我的页面上我得到 8 https://260044-5.web1.fh-htwchur.ch/

提前致谢。

setTimeout(start, 0000);
var i = 2.6;
var num = document.getElementById('humans');

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

function increase() {
    if (i < 100000000) {
      i += 2.6;
      num.innerText = Math.round(i);
    }
}
<div id="humans">2.6</div>
<p>Menschen wurden geboren.</p>

【问题讨论】:

  • 把这个num.innerText = Math.round(i);改成num.innerText = i;
  • 如果要添加浮动,Math.round() 的目的是什么?

标签: javascript html counter


【解决方案1】:

你可以试试这个。主要问题是您的四舍五入,您基本上使用了Math.round(),但您正在处理浮点数据类型。所以只需使用YourNumber.toFixed(n),其中n 是您要显示的小数点数。你可以在下面检查。我只是让你的代码更简短,但你基本上可以改变你的代码的四舍五入,它应该可以工作..

setTimeout((function(){
  var i = 2.6;
  return function start() {
    setInterval(()=> {
      if (i < 100000000){
        i += 2.6;
        document.getElementById('humans').innerText = i.toFixed(1);
      }
    }, 1000);
  };
})(), 0000);
<div id="humans">2.6</div>
<p>Menschen wurden geboren.</p>

【讨论】:

    【解决方案2】:

    您在设置文本时对值进行四舍五入:

    num.innerText = Math.round(i);
    

    如果你想将值显示到小数点后,只需使用toFixed。 示例:

    num.innerText = i.toFixed(1); /* will give you one number after the decimal point */
    

    【讨论】:

      【解决方案3】:

      这里的代码可以工作,但是在您发布的链接中,您的脚本中有该代码:

      //funtion for humans born
      
      setTimeout(start, 0000);
      var i = 2.6;
      var num = document.getElementById('humans');
      
      function start() {
        setInterval(increase, 1000);
      }
      
      function increase() {
          if (i < 100000000) {
            i += 2.6;
            num.innerText = Math.round(i);
          }
      }
      
      //funtion for trees cut
      
      setTimeout(start, 0000);
      var t = 475.646879756;
      var t = document.getElementById('trees');
      
      function startTwo() {
        setInterval(increase, 1000);
      }
      

      你执行了两次start:一次在“人类出生”之后,另一次在“树木砍伐”之后。

      因此,您有两个并发间隔,每秒执行两次increase,并且每个increase 调用都在操作相同的变量。这就是你立即得到 8 的原因。

      我不确定您在这里的目标是什么,但是您要么有不同的变量/函数来增加“人类出生”和“树木砍伐”的每一秒,要么您有一个 start 调用(因此有一个 @987654326 @函数每秒调用一次)。

      无论如何,这是你的错误:如果你想澄清你的逻辑;我/我们可以提供进一步的帮助。

      【讨论】:

        猜你喜欢
        • 2015-09-13
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        • 2022-12-17
        • 2012-11-01
        • 1970-01-01
        • 2018-10-28
        • 2020-10-11
        相关资源
        最近更新 更多