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

Loop through an object and append the properties to an html file

嗨,我是 JavaScript 的新手,一直在练习一些东西。我正在努力循环遍历对象的属性并将每个 属性 附加到 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)
    }
}

而且您不需要 person.hasOwnProperty(key),因为密钥只有 属性。 因此,无论您是否使用 if 条件,它都将始终为真。

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

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

您正在将 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

您要找的是:

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" 输出。