下面是详细的讲解:
简介
HTML table是用来展示网页数据的一种常用的视觉元素。通常,web程序员会手写HTML代码来创建一个table元素,但是对于动态生成表格,使用JavaScript来操作DOM可能会更加简单。本文将讲解如何通过JavaScript来实现动态生成HTML table表格。
实现过程
1. 生成表格内容的数据
我们需要先生成一个包含表格内容的数据集合。这个数据集合可以是一个数组,也可以是一个对象数组,具体的方式根据数据的类型而定。在生成这个数据集合时,需要考虑对数据进行预处理,对于其中的字符串进行转义和编码,以减少XSS攻击的风险。
2. 创建一个HTML table元素
我们可以使用HTMLElement对象的createElement
方法来动态地创建一个table元素。在创建table元素后,需要使用appendChild
方法将它添加到父元素中。如下所示:
var table = document.createElement('table');
var parent = document.getElementById('parent-element');
parent.appendChild(table);
3. 创建表头
在表格的头部,我们通常需要添加表头,用于描述表格的数据内容。表头通常包括一个或多个表头单元格,可以使用<th>
元素来表示。
var table = document.createElement('table');
var parent = document.getElementById('parent-element');
parent.appendChild(table);
var thead = document.createElement('thead');
table.appendChild(thead);
var tr = document.createElement('tr');
thead.appendChild(tr);
var headers = ['Name', 'Age', 'Sex']; // 表头内容
for (var i = 0; i < headers.length; i++) {
var th = document.createElement('th');
th.innerHTML = headers[i];
tr.appendChild(th);
}
在上面的代码中,我们创建了一个<thead>
元素和一个包含3个表头单元格的<tr>
元素。然后,我们使用for
循环遍历表头内容数组,创建一个包含表头内容的<th>
元素,并将其添加到<tr>
元素中。
4. 创建表格主体
除去表头的一部分,就是表格的主体了。在表格主体中,我们需要遍历数据集合,并且为每一行数据创建一个数据行。在数据行中,我们需要为每一个单元格都创建一个<td>
元素,并将其添加到每一行中。如下所示:
var table = document.createElement('table');
var parent = document.getElementById('parent-element');
parent.appendChild(table);
var thead = document.createElement('thead');
table.appendChild(thead);
var tr = document.createElement('tr');
thead.appendChild(tr);
var headers = ['Name', 'Age', 'Sex']; // 表头内容
for (var i = 0; i < headers.length; i++) {
var th = document.createElement('th');
th.innerHTML = headers[i];
tr.appendChild(th);
}
var tbody = document.createElement('tbody');
table.appendChild(tbody);
var dataRows = [
['小明', 20, '男'],
['小红', 18, '女'],
['小刚', 22, '男'],
// ...
]; // 数据集合
for (var i = 0; i < dataRows.length; i++) {
var tr = document.createElement('tr');
tbody.appendChild(tr);
for (var j = 0; j < dataRows[i].length; j++) {
var td = document.createElement('td');
td.innerHTML = dataRows[i][j];
tr.appendChild(td);
}
}
在上面的代码中,我们首先在table元素中创建一个<tbody>
元素。然后,我们使用for
循环遍历数据集合中的每一个数据行。 对于每一个数据行,我们先将一个<tr>
元素添加到<tbody>
元素中。接着,我们再次使用for
循环遍历数据行中的每一个单元格,并创建一个<td>
元素,将单元格的内容插入到<td>
标签内,再将<td>
元素添加到该行的<tr>
元素中。
5. 创建表格尾部
表格尾部通常用于添加一些统计信息或其他相关的声明。在<tfoot>
中创建单元格类似于在其他单元格中创建单元格。如下所示,我们创建了一个包含文本的单元格,并将其添加到一个新创建的<tfoot>
元素中。
var table = document.createElement('table');
var parent = document.getElementById('parent-element');
parent.appendChild(table);
var thead = document.createElement('thead');
table.appendChild(thead);
var tr = document.createElement('tr');
thead.appendChild(tr);
var headers = ['Name', 'Age', 'Sex']; // 表头内容
for (var i = 0; i < headers.length; i++) {
var th = document.createElement('th');
th.innerHTML = headers[i];
tr.appendChild(th);
}
var tbody = document.createElement('tbody');
table.appendChild(tbody);
var dataRows = [
['小明', 20, '男'],
['小红', 18, '女'],
['小刚', 22, '男'],
// ...
]; // 数据集合
for (var i = 0; i < dataRows.length; i++) {
var tr = document.createElement('tr');
tbody.appendChild(tr);
for (var j = 0; j < dataRows[i].length; j++) {
var td = document.createElement('td');
td.innerHTML = dataRows[i][j];
tr.appendChild(td);
}
}
var tfoot = document.createElement('tfoot');
table.appendChild(tfoot);
var tr = document.createElement('tr');
tfoot.appendChild(tr);
var td = document.createElement('td');
td.innerHTML = 'Total: 3';
tr.appendChild(td);
在上面的代码中,我们创建了一个<tfoot>
元素,将其添加到table元素中。 然后,我们创建一个包含文本“Total: 3”的单元格,并将其添加到新创建的<tfoot>
元素中。
示例说明
示例1:生成一个由随机数组成的3X3表格
我们可以通过以下代码来生成一个3X3的表格:
var tableData = [
[Math.random(), Math.random(), Math.random()],
[Math.random(), Math.random(), Math.random()],
[Math.random(), Math.random(), Math.random()]
];
var table = document.createElement('table');
var parent = document.getElementById('parent-element');
parent.appendChild(table);
var thead = document.createElement('thead');
table.appendChild(thead);
var tr = document.createElement('tr');
thead.appendChild(tr);
var headers = ['Col1', 'Col2', 'Col3']; // 表头内容
for (var i = 0; i < headers.length; i++) {
var th = document.createElement('th');
th.innerHTML = headers[i];
tr.appendChild(th);
}
var tbody = document.createElement('tbody');
table.appendChild(tbody);
for (var i = 0; i < tableData.length; i++) {
var tr = document.createElement('tr');
tbody.appendChild(tr);
for (var j = 0; j < tableData[i].length; j++) {
var td = document.createElement('td');
td.innerHTML = tableData[i][j].toFixed(2);
tr.appendChild(td);
}
}
示例2:使用JSON数据生成表格
我们可以使用以下代码来生成一个由JSON数据驱动的表格:
var jsonData = [
{
"name": "小明",
"age": 20,
"sex": "男"
},
{
"name": "小红",
"age": 18,
"sex": "女"
},
{
"name": "小刚",
"age": 22,
"sex": "男"
}
];
var table = document.createElement('table');
var parent = document.getElementById('parent-element');
parent.appendChild(table);
var thead = document.createElement('thead');
table.appendChild(thead);
var tr = document.createElement('tr');
thead.appendChild(tr);
var headers = ['Name', 'Age', 'Sex']; // 表头内容
for (var i = 0; i < headers.length; i++) {
var th = document.createElement('th');
th.innerHTML = headers[i];
tr.appendChild(th);
}
var tbody = document.createElement('tbody');
table.appendChild(tbody);
for (var i = 0; i < jsonData.length; i++) {
var tr = document.createElement('tr');
tbody.appendChild(tr);
var row = [jsonData[i].name, jsonData[i].age, jsonData[i].sex];
for (var j = 0; j < row.length; j++) {
var td = document.createElement('td');
td.innerHTML = row[j];
tr.appendChild(td);
}
}
在以上的几个示例中,我们使用了动态的HTML table来进行数据展示。这些方法可以进一步扩展,根据不同的需求去生成不同的表格,如加入一些筛选功能或排序功能等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现动态生成html table表格的方法分析 - Python技术站