gpt4 book ai didi

javascript - 增量不适用于 setInterval

转载 作者:行者123 更新时间:2023-11-28 17:55:46 26 4
gpt4 key购买 nike

当你给程序一个种子和最大值时,它会遍历每个数字并将其除以 2 和 3,然后显示余数。我希望它在解决问题和解决下一个问题之间留出一秒钟的时间。但每当我尝试使用 setInterval 时,即使在 2 个不同的编辑器上,它也会卡住并崩溃。我还有另一个问题,因为当您在输入框中输入种子和最大值时,它不会保存数字,并且它使用 javascript 中的数字而不是输入框中的数字。提前致谢,我今年 11 岁,几个月前开始编程。

这是我到目前为止所拥有的:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Made with Thimble</title>
<link rel="stylesheet" >
</head>
<body bgcolor="lightblue">
<div id="d2">
Divisible by 2
</div>
<div id="d3">
Divisible by 3
</div>
<div>
<input id="seed" type="number" placeholder="seed" value="3"><br>
<input id="max" type="number" placeholder="max" value="8">
</div>
<button onclick="count()">Count</button>
<div id="output"></div>
<script>
function count(){

var seed= document.getElementById("seed").getAttribute("value")
var max=document.getElementById("max").getAttribute("value")
var temp=1
var output=document.getElementById("output")
temp=seed
console.log("seed:"+seed)
console.log("max:"+max)
while (temp<max){

var intdivby2 = temp%2
var intdivby3 = temp%3

document.getElementById("output").innerHTML+="remainder of "+temp+" divided
by 2 is:"+intdivby2.toString()+"<br>"
document.getElementById("output").innerHTML+="remainder of "+temp+" divided
by 3 is:"+intdivby3.toString()+"<br>"
setInterval(function(){temp++;},1)

}
}
</script>
</body>
</html>

最佳答案

网站崩溃是因为您在循环内调用 setInterval()。因此,对于循环的每个周期,都会创建一个新的计时器。这不是您想要发生的事情。

以下是您需要修复的问题:

  1. setInterval() 的第二个参数是以毫秒为单位的时间,而不是秒。因此,您必须将其更改为 1000。(1 秒 = 1000 毫秒)。

  2. 删除循环并仅调用 setInterval() 一次。在每 1 秒发生一次的函数中,增加 temp 的值并执行必要的操作。

  3. 一旦temp超过max的值,调用clearInterval()停止计时器。

    <

这是修改后的 count() 函数:

function count() {
var seed= document.getElementById("seed").getAttribute("value")
var max=document.getElementById("max").getAttribute("value")
var temp=1
var output=document.getElementById("output")
temp=seed
console.log("seed:"+seed)
console.log("max:"+max)
var id = setInterval(function(){
var intdivby2 = temp%2
var intdivby3 = temp%3

document.getElementById("output").innerHTML+="remainder of "+temp+" divided by 2 is:"+intdivby2.toString()+"<br>"
document.getElementById("output").innerHTML+="remainder of "+temp+" divided by 3 is:"+intdivby3.toString()+"<br>"
temp++;
if (temp > max) clearInterval(id);
},1000)
}

关于javascript - 增量不适用于 setInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44480446/

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