遍历对象并将属性附加到html文件

时间:2016-11-19 18:10:30

标签: javascript for-loop appendchild

您好我是JavaScript新手,并且一直在做一些练习。我正在努力循环遍历Object的属性并将每个属性附加到DOM。有人可以提供一些指导吗?我尝试通过其他问题拼凑这个,但不知道我哪里出错了?

var person = {
    firstName: "john",
    lastName: "doe",
    age: 45,
    placeOfBirth: "somewhere"
}

for(var i = 0; i < person.length; i++) {
    if(hasOwnProperty(person[i])) {
        var p = document.createElement("p");
        p.innerHTML = person[i];
        document.body.appendChild(p)
    }
}

3 个答案:

答案 0 :(得分:0)

你不需要from datetime import datetime, timezone print(datetime(1970, 1, 1, tzinfo=timezone.utc)) ,因为key只是属性。 所以如果你使用person.hasOwnProperty(key)条件,它总是如此。

if

答案 1 :(得分:0)

您正在将person视为数组。对象没有长度。使用for in迭代对象属性

尝试:

var person = {
    firstName: "john",
    lastName: "doe",
    age: 45,
    placeOfBirth: "somewhere"
}

for(key in person) {
    if(person.hasOwnProperty(key)) {
        var p = document.createElement("p");
        p.innerHTML = person[key];
        document.body.appendChild(p)
    }
}

另请注意hasOwnProperty()

的更正用法

DEMO

答案 2 :(得分:0)

您正在寻找的是:

for(var i in person){
    if(person.hasOwnProperty(i)){
        var p = document.createElement("p");
        p.innerHTML = person[i];
        document.body.appendChild(p);
    }
}

但是,因为i in person引用了对象中的任何内容,我们可以完全删除if(person.hasOwnProperty(i)),因为它始终具有该属性。

你可能也想考虑使用密钥名称,因为这只会附加值,并且不会对与之关联的密钥执行任何操作。

尝试添加:

p.innerHTML = i + ': ' + person[i];

这应该为每个段落元素生成“Key:value”输出。