我刚看了一篇关于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>
但它不起作用。有人能告诉我它有什么问题吗?
答案 0 :(得分:1)
您需要将结果添加到前一个结果并更改console.log
的调用,并为显示添加一个中断。
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;
答案 1 :(得分:0)
console.log
将登录控制台
和innerHTML
将设置html内容。
这是两种不同的操作。
如果你想将html内容设置为字符串,那么我建议你形成一个字符串,然后设置innerHTML
,这将减少dom操作/操作。
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;
答案 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]);
(请注意另外的逗号以避免类型转换为字符串。)