我的代码有什么问题?我试图让它为所有项目返回true / false(如果年龄等于27),但它只打印最后一个案例,这是真的。
如何让它一个接一个地打印出来?
var people = [{
name: "Name1",
age: 29
}, {
name: "Name2",
age: 33
}, {
name: "Name3"
}, {
name: "Name4",
age: 27
}, ];
for (var i = 0; i < people.length; i++) {
if (people[i].age === 27) {
document.body.innerHTML = "True for person number " + i + "</br>";
} else {
document.body.innerHTML = "False for person number " + i + "</br>";
}
};
http://jsfiddle.net/rmppdn34/1/
谢谢!
答案 0 :(得分:0)
您必须使用+=
追加
if(people[i].age === 27) {
document.body.innerHTML += "True for person number " + i + "</br>";
}
else {
document.body.innerHTML += "False for person number " + i + "</br>";
}
答案 1 :(得分:0)
问题不在于只显示最后一个人的详细信息,而是显示每个细节,但随后被循环的下一次迭代覆盖,这是因为您在每次迭代时都没有追加内容,而是在每次迭代时覆盖。改为使用:
if(people[i].age === 27) {
document.body.innerHTML += "True for person number " + i + "</br>";
}
else {
document.body.innerHTML += "False for person number " + i + "</br>";
}
}
如果你看一下操作员,你原来的情况就是:
document.body.innerHTML = "True for person number " + i + "</br>";
如上所述,每次循环运行时都会覆盖innerHTML
*,并评估/执行if
;而我已改为:
document.body.innerHTML += "True for person number " + i + "</br>";
+=
将新值/输出附加到现有值
你可以用一个简单的三元素来简化if
,因为你的输出是一个布尔值,它将由一个简单的条件运算符返回:
document.body.innerHTML += (people[i].age === 27) + ' for person number ' + i + '<br />';
参考文献:
答案 2 :(得分:0)
改为覆盖覆盖;)
document.body.innerHTML += "True for person number " + i + "</br>";
答案 3 :(得分:0)
做这样的事情。
var people = [
{
name : "Name1",
age : 29},
{
name : "Name2",
age : 33},
{
name : "Name3"},
{
name : "Name4",
age : 27},
];
for (var i = 0; i < people.length; i++){
if(people[i].age == 27) {
document.body.innerHTML += "True for person number " + i + "</br>";
}
else {
document.body.innerHTML += "False for person number " + i + "</br>";
}
};
输出:0号人员为假 1号人员为假 第2号人员为假 对于3号人员是真的
答案 4 :(得分:0)
这是因为您每次迭代都会替换整个内容。在将其放入文档之前,您应该生成所有字符串,因为访问innerHTML
的操作非常慢。
var people = [{
name: "Name1",
age: 29
}, {
name: "Name2",
age: 33
}, {
name: "Name3"
}, {
name: "Name4",
age: 27
}, ];
var s = "";
for (var i = 0; i < people.length; i++) {
if (people[i].age === 27) {
s += "True for person number " + i + "</br>";
} else {
s += "False for person number " + i + "</br>";
}
};
document.body.innerHTML = s;