为什么我的for循环没有执行?

时间:2016-06-05 19:22:06

标签: javascript

当我使用document.write它可以工作,但它不适用于getElementById。 同样的。 `

<div id="mydiv"></div>
    <script>
        var i = 0;
        for (i=0; i<=10; i++){
        //while (i<=10){
            document.getElementById("mydiv").innerHTML = i + "<br>";
            //i++;
        }
    </script>

输出只有10,但我想逐行列出0-10。怎么解决?

4 个答案:

答案 0 :(得分:2)

每次循环运行时,它都会覆盖div的innerHTML。

此实现以 html 的空字符串开头,然后使用 + = 连接计数器,并在每次迭代时连接&lt; br&gt;

    var i = 0;
    var html = '';
    for (i=0; i<=10; i++){
        html += i + '<br>';
    }
    document.getElementById("mydiv").innerHTML = html;

答案 1 :(得分:0)

您正在覆盖或替换内容。您需要附加,因此您可以使用+=运算符代替=

<div id="mydiv"></div>
<script>
  var i = 0;
  for (i=0; i<=10; i++){
    document.getElementById("mydiv").innerHTML += i + "<br>";
  }
</script>

答案 2 :(得分:0)

你被覆盖了。改为追加。

for (var i = 0; i <= 10; i++) {
  var div = document.getElementById("mydiv");
  div.innerHTML = div.innerHTML + "<br/>" + i;
}
<div id="mydiv"></div>

答案 3 :(得分:0)

虽然其他答案都是正确的,但我认为这是一种冒险行为,因为您的浏览器可能会在加载所有html元素之前尝试执行代码。 (例如,如果你的div在代码之后是)。

所以我建议这个:

<div id="mydiv">
<script>
    for (var i=0; i<=10; i++){
        document.write ( i + "<br />");
    }
</script>
</div>

N.B:但是,请记住,你不能使用&#34; document.write&#34; 页面完成加载后。

你也可以这样做是安全的:

<div id="mydiv"></div>
<script>
    document.onload = function(){
        temp=""
        for (var i=0; i<=10; i++){
            temp += i + "<br />";
        }
        document.getElementById("mydiv").innerHTML = temp;
    }
</script>