0

我对这段代码有一些问题。我的问题是,使用下面的代码,它没有加上带有“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”,那么它应该将最后一个 0 增加 3,所以它看起来像这样:

0 / 3

然后,假设它将生成一个新的“incr”,比如说“5”。然后它看起来像这样:

0 / 8

---> 但现在,它并没有这样做。它只是将'incr'写入'detection-ratio'而不增加它。

4

3 回答 3

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);
    }());

感谢您的解释和耐心。

于 2013-10-23T19:42:36.007 回答
0

我假设您正在尝试将文本附加到检测率,如果您需要的话

document.getElementById('detection-ratio').innerText += '0 / '+ incr;

++ 在变量之前是预增量运算符,因为您正在生成随机数,我假设这实际上不是您想要的。

于 2013-10-23T18:41:11.923 回答
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));
于 2013-10-23T19:51:16.093 回答