【问题标题】:JavaScript - for loop with an array [closed]JavaScript - 带有数组的for循环[关闭]
【发布时间】:2014-02-12 01:24:14
【问题描述】:

这就是我到目前为止所做的:

<script>
text = new Array("t", "te", "tes", "test");
for(new i; i < text.length; i++)
{
    document.getElementById('text').innerHTML=text[i];
}
</script>


<body>
<span id='text'></span>
</body>

我稍后会添加一个计时器,但我的问题是,为什么我会得到“ReferenceError 'i' is not defined”? 它的定义如您所见.. 提前致谢。

【问题讨论】:

标签: javascript html


【解决方案1】:

代替:

for(new i; i < text.length; i++)

试试这个:

for(var i=0; i < text.length; i++)

你使用的是new,而在javascript中我们必须使用var来声明变量。

更新1

正如@MattBall 和@oxfn 在 cmets 中提到的,您的脚本在DOM 准备好之前运行。所以你必须把脚本放在body标签之后。(或者你可以jquery)。

以下是工作代码:

<body>
    <span id='text'></span>
    <script>
    var text = new Array("t", "te", "tes", "test");
    for(var i=0; i < text.length; i++)
    {
        document.getElementById('text').innerHTML = document.getElementById('text').innerHTML +":"+ text[i];
    }
    </script>
</body>

【讨论】:

  • 现在没有给我错误,但它不会将 span 的文本更改为数组中的内容? (因为我现在没有计时器,它会在一秒钟内结束,但我不应该至少在跨度内看到“文本”吗?)
  • @WoopWoopWoopWoop 你的代码在 DOM 准备好之前运行。
  • 哦,对了。我以前有过这个,只是把jScript放在下面,谢谢,我的错。
  • @WoopWoopWoopWoop 把你的&lt;script&gt;放在&lt;body&gt;的末尾
  • 不是“在正文标记之后”,而是在结束正文标记之前。
【解决方案2】:

你也可以用这个方法,

    var text = new Array("t", "te", "tes", "test");
    text.forEach(function(textvalue) {
        console.log(textvalue);
        document.getElementById('text').innerHTML=textvalue;
    });

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

将数组内容值显示到&lt;div id="text"&gt;&lt;/div&gt;

<script>
      function ArrayPrint(){
            var text = ["t", "te", "tes", "test"];
            text.forEach(function(textvalue) {
                console.log(textvalue);
                document.getElementById('text').innerHTML  += textvalue +' | ';
            });
      }
      window.onload = ArrayPrint;
</script>

HTML:

  <div id="text"></div>

【讨论】:

    【解决方案3】:
    <!DOCTYPE html>
    <html>
    <body>
    <span id='text'></span>
    </body>
    </html>
    
    
    <script  type="text/javascript">
    text = new Array("t", "te", "tes", "test");
    for(var i=0; i < text.length; i++)
    {
        document.getElementById('text').innerHTML=text[i];
    }
    </script>
    

    【讨论】:

      【解决方案4】:

      由于 JavaScript 中的 int 是原始类型,并且它的初始化不需要 new 关键字,并且在 DOM 上工作的 JavaScript 代码需要在代码运行时 DOM 已经准备好使用,因此请将您的脚本代码放在正文关闭之前的底部标记或在加载时调用它。

      您还可以缓存长度属性以提高性能。

          for(var i = 0,max=text.length; i < max; i++)
          {
              document.getElementById('text').innerHTML = document.getElementById('text').innerHTML +":"+ text[i];
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-16
        • 2021-02-16
        • 2016-01-31
        • 1970-01-01
        • 2016-08-26
        • 2018-11-22
        相关资源
        最近更新 更多