gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:28:34 25 4
gpt4 key购买 nike

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

<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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com