【问题标题】:For loop only outputs last iterationFor 循环仅输出最后一次迭代
【发布时间】:2016-05-10 09:52:30
【问题描述】:

我是 Javascript 新手,只是在尝试将一个简单的 for 循环打印到 HTML。

HTML:

<div id="hello"</div>

JS:

var text="";

for (var i=0;i<10;i++) {
    document.getElementById("hello").innerHTML=text+i;
}

我的问题是这段代码只输出最后一次迭代“9”,而不是我想要的“0123456789”。

现在,如果我执行document.write,它会很好地打印出数字,但我听说这是不好的做法,所以我只想以正确的方式进行。

谢谢

【问题讨论】:

    标签: javascript html loops for-loop document.write


    【解决方案1】:

    最好先构建您的文本内容并将其插入 HTML 元素一次(以节省一些时间):

    var text="";
    
    for (var i=0;i<10;i++) {
        text += i;
    }
    
    document.getElementById("hello").innerHTML = text;
    

    【讨论】:

      【解决方案2】:

      您应该使用加法赋值运算符+= 将值添加到变量中,因此您只是在= 之前缺少+

      document.getElementById("hello").innerHTML += text+i;
      

      注意:使用textContent 而不是innerHTML,因为您只是附加一个文本,请查看下面的示例。


      var text="";
      for (var i=0;i<10;i++) {
          document.getElementById("hello").textContent += text+i;
      }
      &lt;div id="hello"&gt;&lt;/div&gt;

      【讨论】:

      • 太好了,所以要给变量添加值我总是使用 +=。明白了,谢谢你的帮助。