javascript for循环进入无限循环

时间:2014-01-29 05:10:34

标签: javascript

我使用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>

3 个答案:

答案 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>

你忘记在循环中添加延迟