1 回答
TA贡献1806条经验 获得超5个赞
你确实很接近!
一种简化相当多的方法是保留对当前“标题”单元格的引用,即您想要增加的单元格rowspan
。这样你根本不需要处理索引,产生一个非常简单的算法:
对于每一行
将headerCell的rowSpan增加 1
删除firstCell
将headerCell设置为firstCell
将firstCell设置为行的第一个单元格
如果这是第一行或firstCell的文本与headerCell的文本不同
除此以外
在 JavaScript 中,它看起来像这样:
const table = document.querySelector('table');
let headerCell = null;
for (let row of table.rows) {
const firstCell = row.cells[0];
if (headerCell === null || firstCell.innerText !== headerCell.innerText) {
headerCell = firstCell;
} else {
headerCell.rowSpan++;
firstCell.remove();
}
}
table, tr, td {
border: solid 1px black;
}
<table>
<tr>
<td>fish</td>
<td>salmon</td>
</tr>
<tr>
<td>fish</td>
<td>cod</td>
</tr>
<tr>
<td>fish</td>
<td>plaice</td>
</tr>
<tr>
<td>bird</td>
<td>robin</td>
</tr>
<tr>
<td>bird</td>
<td>crow</td>
</tr>
</table>
添加回答
举报