📅  最后修改于: 2023-12-03 15:38:58.103000             🧑  作者: Mango
在实现表格数据的合并(merge)时,我们需要比较两个单元格(td)的数据是否相同。如果相同,则需要将两个单元格合并成一个,否则不做任何操作。下面介绍在 Javascript 中如何实现这个功能。
我们假设表格的 HTML 结构如下:
<table>
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>国籍</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td>
<td>25</td>
<td>男</td>
<td>中国</td>
</tr>
<tr>
<td>李四</td>
<td>30</td>
<td>男</td>
<td>中国</td>
</tr>
<tr>
<td>王五</td>
<td>25</td>
<td>女</td>
<td>美国</td>
</tr>
</tbody>
</table>
我们可以通过遍历表格的每一行,比较相邻的两个单元格的值是否相同,如果相同则进行合并。代码如下:
const table = document.querySelector('table');
const rows = table.rows;
for (let i = 1; i < rows.length; i++) {
const currentRow = rows[i];
const prevRow = rows[i - 1];
const currentTd = currentRow.cells;
const prevTd = prevRow.cells;
for (let j = 0; j < currentTd.length; j++) {
if (currentTd[j].innerHTML === prevTd[j].innerHTML) {
prevTd[j].rowSpan++;
currentTd[j].style.display = 'none';
}
}
}
上面的代码中,我们首先获取了表格的每行(包括表头和数据行),然后通过循环遍历每一行的每个单元格,同时比较相邻两个单元格的值是否相同。如果相同,则将前一个单元格的 rowSpan 属性加 1,并将当前单元格隐藏(即不显示)。
通过上面的代码,我们可以轻松地实现表格数据的合并操作。当然,这里只是演示了一个简单的实现方式,实际应用中需要根据不同的业务场景进行调整和完善。