如何制作一个使用javascript每秒添加特定数字的计数器?

问题描述 投票:0回答:3

我有以下代码,应该每秒增加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>
javascript html counter
3个回答
0
投票

设置文本时要四舍五入:

num.innerText = Math.round(i);

如果要显示小数点后第n位的值,请使用toFixed。例如:

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

0
投票

这里的代码有效,但是在您发布的链接中,您的脚本中已经包含该代码:

//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调用(因此有一个increase函数每秒调用一次)。

无论如何,这是您的错误:如果您想阐明自己的逻辑;我/我们可以提供进一步的帮助。


0
投票

您可以尝试这个。主要问题是四舍五入,您基本上使用了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>
© www.soinside.com 2019 - 2024. All rights reserved.