3 回答
TA贡献1998条经验 获得超6个赞
你可以试试这个。主要问题是你的四舍五入,你基本上使用了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>
TA贡献1871条经验 获得超8个赞
您在设置文本时对值进行四舍五入:
num.innerText = Math.round(i);
如果你想显示小数点后第n位的值,只需使用toFixed
. 例子:
num.innerText = i.toFixed(1); /* will give you one number after the decimal point */
TA贡献1883条经验 获得超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调用(因此increase每秒调用一个函数)。
无论如何,这是你的错误:如果你想澄清你的逻辑;我/我们可以提供进一步的帮助。
- 3 回答
- 0 关注
- 130 浏览
添加回答
举报