我使用for循环在javascript
中创建了一个简单的计时器,但是在单击按钮调用函数test()时,整个页面冻结,所以我假设我在某处有一个无限循环
这是我的代码:
<html>
<head>
<script>
function test() {
var HowLong = 5;
for (var i=0;i<HowLong;i--) {
document.write(HowLong[i] + "<br>");
}
}
</script>
</head>
<body>
<input type="button" onclick="test()" value="Start Timer">
</body>
</html>
答案 0 :(得分:3)
是的,for循环中存在无限循环问题:
for (var i=0;i<HowLong;i--)
而不是i--
尝试i++
for (var i=0;i<HowLong;i++)
还有一件事HowLong
不是数组,因此您无法使用HowLong[i]
,只需使用:
document.write(i+ "<br>");
正如@jfriend00
在评论中提到的那样在文档加载后使用document.write()
时,它将清除当前文档并开始一个新文档。在您的情况下,您的按钮Start Timer
将被清除。如果您想避免它,可以使用div
并为其添加值。
<html>
<head>
<script>
function test() {
var HowLong = 5;
for(var i=0;i<HowLong;i++) {
document.getElementById("myDiv").innerHTML += i + "<br>";
}
}
</script>
</head>
<body>
<input type="button" onclick="test()" value="Start Timer">
<div id="myDiv"></div>
</body>
</html>
答案 1 :(得分:0)
试试这个;
for (var i=0;i<HowLong;i++) {
document.write(i + "<br>");
}
答案 2 :(得分:0)
<html>
<head>
<script>
var HowLong = 5;
var isRun = false;
function mf(i){
document.getElementById('myAnchor').innerHTML = i;
}
function rt(i)
{
setTimeout(function(){
mf(i++);
if(i!=HowLong+1)rt(i);
else isRun = false;
}, 1000); // 1000ms = 1sec
}
function test() {
var i = 1;
if(!isRun)
{
isRun = true;
rt(i);
}
}
</script>
</head>
<body>
<div id="myAnchor"></div>
<input type="button" onclick="test()" value="Start Timer">
</body>
</html>
你忘记在循环中添加延迟