javascript - 如何创建一个每 1-8 秒递增 1 的计数器(随机)

标签 javascript random setinterval clearinterval

所以我认为我很接近,但我所写的内容开始以更大的值递增,并且运行时间越长,速度越快。我认为这是未正确清除间隔的问题。请尽可能提供帮助。

<html>
    <head>
        <script type="text/javascript">

            function setTimer(){
                var timer = (((Math.floor(Math.random() * 6))+1)*1000);
                clearInterval(interval);
                var interval = setInterval(updateCounter, timer);
            }

            function updateCounter(){
                var counter = document.getElementById("counter");                    
                var count = parseInt(counter.innerHTML);
                count++;
                counter.innerHTML = count;
                setTimer();
            }

        </script>
    </head> 

    <body style="margin:5%;" onload="setTimer()">
        <div id="counter">1</div>
    </body>
</html>

最佳答案

您的interval 变量是setTimer 的局部变量。 clearInterval(interval); 将不起作用,因为您传递的是 undefined(interval 的值)。它不会因变量提升而引发错误,但您传递给clearInterval 的值肯定是未定义

修复#1:

setTimer 之外声明 interval:

var interval;
function setTimer(){
    var timer = (((Math.floor(Math.random() * 6))+1)*1000);
    clearInterval(interval);
    interval = setInterval(updateCounter, timer);            // no redeclaring here
}

修复 #2:

由于您是在再次设置间隔之前清除间隔,因此您可以使用 setTimeout,因为它完全符合您的需要:

function setTimer() {
    var timer = (((Math.floor(Math.random() * 6))+1)*1000);
    setTimeout(updateCounter, timer);                        // no clearing is needed this time
}

注意:

您的 timer 变量将在 1-6 秒之间。你说你希望它是 1-8,所以使用:

var timer = (Math.floor(Math.random() * 8) + 1) * 1000;

关于javascript - 如何创建一个每 1-8 秒递增 1 的计数器(随机),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47777087/

相关文章:

javascript - 需要在JavaScript中以5秒的时间间隔逐一渲染div

javascript - 显示/隐藏故障 - 有人可以指出我的错误吗?

javascript - 如何计算具有特定类jquery的元素

javascript - 通过选择选项标签自定义下拉菜单?

python - 序列中的随机字符串

matlab - 在 MATLAB 中置换矩阵的列

页面最小化/离开后的Javascript setInterval "catches up"

javascript - Rails 设计 + omniauth-stripe-connect "Authorization code does not belong to you"

javascript - 在 JavaScript 中用随机数创建长度为 n 的数组

javascript - JavaScript 中的自定义 setInterval() 函数出现问题