我正在寻找一种方法来列出以下循环中的每个名字。目前它循环通过每个名字停在最后一个杰克,只显示它。我想让它显示所有这些:John,Jane,Joe
var person = [{firstName:"John"}, {firstName:"Jane"}, {firstName:"Jack"}];
for (var i = 0; i < person.length; i++) {
document.getElementById("demo").innerHTML = person[i].firstName;
}
有人可以建议我如何做到这一点吗?
答案 0 :(得分:1)
问题在于您正在覆盖innerHTML
值,而是需要使用&#39; +&#39; 将您的值附加到innerHTML
属性:
var person = [{firstName:"John"}, {firstName:"Jane"}, {firstName:"Jack"}];
var demo = document.getElementById("demo");
for (var i = 0, len = person.length; i < len; i++) {
demo.innerHTML += person[i].firstName + ' ';
}
查看此codepen。我添加了一些修改以使代码更高效。
答案 1 :(得分:0)
请看一下这段代码:
var person = [{firstName:"John"}, {firstName:"Jane"}, {firstName:"Jack"}],
html = "";
for (var i = 0; i < person.length; i++) {
html += person[i].firstName;
}
document.getElementById("demo").innerHTML = html;
您每次都使用innerHTML覆盖,因为您没有使用'+ ='。我喜欢事先创建一个字符串并将其设置为空。然后你可以添加所有内容,只需要调用innerHTML一次。
希望这有帮助!
答案 2 :(得分:0)
这是另一种使用更多functional样式
的方法
"use strict";
var people = [{firstName:"John"}, {firstName:"Jane"}, {firstName:"Jack"}];
var node = document.getElementById('demo');
node.innerHTML = people.map(function(person){
return person.firstName;
}).join(', ');
#demo {
padding: 1em;
background-color: #def;
border: 1px solid gray
}
<div id="demo"></div>