【发布时间】:2017-11-13 03:23:10
【问题描述】:
我 11 岁,刚开始编程。我试图使用一个while循环,我希望它以块的形式显示答案,而不是一大块。所以我尝试使用 setTimeout 但它会在一秒钟后显示第一行,然后立即将其余部分显示为一个大块。即使我不知道它是从哪里来的,它也会使用数字 9 作为临时变量。提前致谢。
我想在代码中保留 while 循环,因为我正在学习如何使用它们,所以如果您可以在答案中保留 while 语句,那就太棒了!
这是我的代码:
<!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").value
var max = document.getElementById("max").value
var temp = 1
var output = document.getElementById("output")
temp = seed
console.log("seed:" + seed)
console.log("max:" + max)
document.getElementById("output").innerHTML = " "
while (temp <= max) {
var intdivby2 = temp % 2
var intdivby3 = temp % 3
setTimeout(function() {
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++
}, 1000)
}
}
</script>
</body>
</html>
【问题讨论】:
-
我对你想要它做什么有点困惑。您是否希望它每秒显示一行,而不是在一秒钟后显示全部?
-
@Glen Pierce 这正是我想要的。谢谢
-
“刚开始编程”在一月份你说你是几个月前开始的,事实上你很年轻而且对编程相当陌生,这没有任何意义。只需提出一个简洁的问题,您就会得到答案并避免投反对票。
-
嘘,让他松懈一点。这是一个非常合理的问题,他只是误解了 setTimeout 的工作原理。
-
您之前是否编写过任何异步程序(
setTimeout、ajax 等)?它不能很好地切割循环。不过,学习递归将是一个很好的动机。
标签: javascript while-loop settimeout