我在使用此代码时遇到了一些问题。我的问题是,使用下面的代码,它不会加上'incr'的检测率文本。它只是进入了incr,但没有加分。
这是我的代码。
(function loop() {
var rand = Math.round(Math.random() * (3000 - 500)) + 500;
var incr=Math.floor(Math.random()*6);
setTimeout(function() {
document.getElementById('detection-ratio').innerText = '0 / '+ ++incr;
loop();
}, rand);
}());
“检测率”文本默认为:
0 / 0
然后,让我们说'incr'生成数字'3',然后它应该用3增加最后0,所以它看起来像这样:
0 / 3
然后,让我们说它会产生一个新的'incr',让我们说'5'。然后它看起来像这样:
0 / 8
--->但是现在,它并没有这样做。它只是将'incr'写入'检测比'而不增加它。
答案 0 :(得分:0)
我假设您正在尝试将文本追加到检测率 如果是这样你需要
document.getElementById('detection-ratio').innerText += '0 / '+ incr;
++变量之前是一个预增量运算符,因为你正在生成随机数,我假设它实际上并不是你想要的。
答案 1 :(得分:0)
希望这段代码可以帮助您获得预期的输出,如果出现问题,请告诉我。一旦达到>也停止迭代。 26
var incr = 0;
(function loop() {
var rand = Math.round(Math.random() * (3000 - 500)) + 500;
incr += Math.floor(Math.random()*6);
setTimeout(function() {
console.log('0 / '+ incr);
loop();
}, rand);
}());
感谢您的解释和耐心。
答案 2 :(得分:0)
由于你无论如何递归地调用循环,你可能想要考虑更实用的方法:
(function loop(startctr) {
var rand = Math.round(Math.random() * (3000 - 500)) + 500;
nextctr = startctr + Math.floor(Math.random()*6);
setTimeout(function() {
console.log('0 / '+ nextctr);
loop(nextctr);
}, rand);
}(0));