为什么这个增量不起作用?

时间:2013-10-23 18:11:59

标签: javascript increment

我在使用此代码时遇到了一些问题。我的问题是,使用下面的代码,它不会加上'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'写入'检测比'而不增加它。

3 个答案:

答案 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));