JavaScript:将对象属性附加为子元素

标签 javascript arrays for-loop createelement object-properties

我有一个对象数组,我试图为每个对象和每个对象的属性创建 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/

相关文章:

javascript - VSCode 高级代码片段转换

javascript - 无法使用 Skydrive API 获取文件夹内容

javascript - 检查数组中的值

c - 如何在C中查找数组中的元素

javascript - 多个切换按钮,1 个 jQuery 代码

javascript - 如何在 jQuery 组合框自动完成中匹配多个子字符串

arrays - 在vba中连接两个数组?

javascript - 使用 for 循环反转数组

for-loop - Stata——提取循环运行的 3500 个回归的回归输出

java - 为什么这个循环打印了3次底线?