循环遍历数组时出现了一个愚蠢的错误

时间:2016-07-26 09:20:15

标签: javascript

我刚看了一篇关于for in陈述的文章:blog.niftysnippets.org/2010/11/myths-and-realities-of-forin.html  并创建了一个小数组:

<script>
var stuff, index;
stuff = ['a', 'b', 'c'];
stuff.name = "Foo";
for (index in stuff) {
x = document.getElementById("demo")
        x.innerHTML = console.log("stuff[" + index + "] = " + stuff[index])
}

</script>

但它不起作用。有人能告诉我它有什么问题吗?

4 个答案:

答案 0 :(得分:1)

您需要将结果添加到前一个结果并更改console.log的调用,并为显示添加一个中断。

&#13;
&#13;
var stuff = ['a', 'b', 'c'],
    index,
    x = document.getElementById("demo");

stuff.name = "Foo";
for (index in stuff) {
    x.innerHTML += "stuff[" + index + "] = " + stuff[index] + '<br>';
    //          ^^                                          ^^^^^^^^
}
&#13;
<div id="demo"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

console.log将登录控制台

innerHTML将设置html内容。

这是两种不同的操作。

如果你想将html内容设置为字符串,那么我建议你形成一个字符串,然后设置innerHTML,这将减少dom操作/操作。

&#13;
&#13;
var stuff, index;
stuff = ['a', 'b', 'c'];
stuff.name = "Foo";
var str = "";

for (index in stuff) {
  console.log("stuff[" + index + "] = " + stuff[index])
  str += "stuff[" + index + "] = " + stuff[index] + "<br/>";
}
x = document.getElementById("demo");
x.innerHTML = str;
&#13;
<div id="demo"></div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

首先,您无法将innerHTML定义为console.log函数。 该函数不会返回您放入其中的字符串。所以它将是未定义的。 其次,每次循环都会覆盖innerHTML。如果要堆叠,则需要连接字符串。 如果是相同的话,你不需要在每个循环中调用document.getElementById。

<script>
var stuff, index;
stuff = ['a', 'b', 'c'];
stuff.name = "Foo";
var x = document.getElementById("demo");
for (index in stuff) {
    var string = "stuff[" + index + "] = " + stuff[index];
    console.log(string );
    x.innerHTML +=string ;    
}

</script>

答案 3 :(得分:0)

我有根据的猜测是你在加载DOM之前运行你的代码(更具体地说是带有id="demo"的元素),所以如果你打开JavaScript控制台(许多浏览器中的 F12 )您会看到有关x.innerHTML的抱怨:

  

TypeError:x为null

即使我错了,这段代码表明你并没有真正意识到控制台并希望在页面上看到输出,这是不会发生的:

x.innerHTML = console.log("stuff[" + index + "] = " + stuff[index]);

这就是你应该做的一切:

console.log("stuff[" + index + "] = ", stuff[index]);

(请注意另外的逗号以避免类型转换为字符串。)