document.body.innerHTML只返回最后一个case

时间:2014-10-15 07:16:05

标签: javascript

我的代码有什么问题?我试图让它为所有项目返回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/

谢谢!

5 个答案:

答案 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>";
    }
}

JS Fiddle demo

如果你看一下操作员,你原来的情况就是:

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 />';

JS Fiddle demo

参考文献:

答案 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;