3 回答

TA贡献1890条经验 获得超9个赞
如果
data
是对象数组,则从数组方法开始,例如.map()
or.forEach()
(演示使用,.foreach()
因为制作表格实际上并不需要新数组)。这将遍历
.insertRow()
用于每个对象的数组。现在使用Object.values()
or将每个对象转换为其值的元素Object.keys()
(演示使用Object.values()
它节省了一个步骤)。现在通过值的阵列与迭代
.forEach()
或.map()
和.insertCell()
随后.textContent
的值到细胞中。
let data = [{
name: 'John Doe',
date: '1/1/19',
assigned: 'A'
},
{
name: 'Jane Doe',
date: '2/1/819',
assigned: 'B'
},
{
name: 'Darth Vader',
date: '3/11/19',
assigned: 'C'
},
{
name: 'Obi Wan',
date: '4/20/19',
assigned: 'D'
}
];
const frag = document.createDocumentFragment();
const tbl = document.createElement("table");
const tblB = document.createElement("tbody");
tbl.appendChild(tblB);
frag.appendChild(tbl);
data.forEach((obj, idx) => {
let row = tblB.insertRow();
Object.values(obj).forEach(val => {
let cell = row.insertCell();
cell.textContent = val;
});
});
document.body.appendChild(frag);

TA贡献1836条经验 获得超5个赞
我刚刚看到你的评论,你更喜欢 vanilla js。如果有兴趣,这里是 jquery 方式。
var data = [
{ Column1: "col1row1", Column2: "col2row1" },
{ Column1: "col1row2", Column2: "col2row2" }
];
$("#tasklist")
.append($('<table>')
.append($('<tbody>')));
var tbody = $("#tasklist > table > tbody");
$.each(data, function (idx, item) {
$(tbody).append($('<tr>')
.append($('<td>')
.text(item.Column1)
)
.append($('<td>')
.text(item.Column2)
)
);
});
添加回答
举报