我有一个对象数组,我试图为每个对象和每个对象的属性创建 HTML 元素,但当我尝试循环 containerDiv 并将对象的属性作为子元素附加时,我陷入了困境。
- 我想为每个对象创建一个 div ,其类名为 容器Div;
- 我想循环遍历containerDiv;
- 我想为每个对象属性创建一个元素并附加它们 作为containerDiv的子元素;
我的代码示例如下所示:
var parent = document.getElementById('parent');
function createHTMLElements() {
for(var i = 0; i < arrayOfObjects.length; i++) {
var containerDiv = document.createElement('div');
containerDiv.className = 'container';
parent.appendChild(containerDiv);
// Loop through containerDiv and append object properties as child elements
}
}
var arrayOfObjects = [
{
name: 'John',
surname: 'Doe'
},
{
name: 'David',
surname: 'Mills'
}
]
最佳答案
您所需要的只是对数组中的当前对象进行循环。
for (var p in arrayOfObjects[i]) {
containerDiv.appendChild(document.createElement("p"))
.textContent = p + ": " + arrayOfObjects[i][p];
}
<小时/>
演示:
var parent = document.getElementById('parent');
var arrayOfObjects = [{
name: 'John',
surname: 'Doe'
},
{
name: 'David',
surname: 'Mills'
}
];
createHTMLElements();
function createHTMLElements() {
for (var i = 0; i < arrayOfObjects.length; i++) {
var containerDiv = document.createElement('div');
containerDiv.className = 'container';
parent.appendChild(containerDiv);
for (var p in arrayOfObjects[i]) {
containerDiv.appendChild(document.createElement("p"))
.textContent = p + ": " + arrayOfObjects[i][p];
}
}
}
.container {
border: 2px dashed #333;
margin: 4px;
}
.container>p {
margin: 10px;
padding: 5px;
background: #DDD;
}
<div id=parent></div>
这是一个不使用循环但使用辅助函数来编写更清晰的代码的演示。
var parent = document.getElementById('parent');
var arrayOfObjects = [{
name: 'John',
surname: 'Doe'
},
{
name: 'David',
surname: 'Mills'
}
];
createHTMLElements();
function createHTMLElements() {
for (var i = 0; i < arrayOfObjects.length; i++) {
var containerDiv = create('div', {className: "container"}, parent);
var obj = arrayOfObjects[i];
create("p", {textContent: "name: " + obj.name}, containerDiv);
create("p", {textContent: "surname: " + obj.surname}, containerDiv);
}
}
function create(type, props, parent) {
var el = document.createElement(type);
for (var p in props) {
el[p] = props[p];
}
if (parent) {
parent.appendChild(el);
}
return el;
}
.container {
border: 2px dashed #333;
margin: 4px;
}
.container>p {
margin: 10px;
padding: 5px;
background: #DDD;
}
<div id=parent></div>
关于JavaScript:将对象属性附加为子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45772327/