rowspan是唯一原生方案,必须写在首行单元格中并向下锁定列位置,后续对应列需彻底删除单元格,否则导致错位、空白或js操作失效。

rowspan 是唯一原生方案,但写错一行整表就错位——浏览器不报错,只渲染出空白、重叠或列偏移。
rowspan 必须写在首行单元格里
它只对当前 <td> 或 <code><th> 生效,并向下“锁定”该列位置。比如要让“张三”覆盖第1–3行第一列,就得把 <code>rowspan="3" 写在第1行的 <td rowspan="3">张三</td> 中。
- 写在第2行?浏览器没上一行可跨,直接忽略
- 写在第3行?只剩0行可跨,
rowspan形同虚设 - 值超出剩余行数(如只剩2行却设
rowspan="4"),tr.children.length会不一致,后续 JS 操作可能失效
后续行对应列必须彻底删除,不能留空
这是最常翻车的地方。rowspan="3" 表示本格吃掉正下方2个原始格子,所以第2、3行同一列位置**不能出现任何 <td> 或 <code><th>**。
<ul>
<li>❌ 错误:<code><td></td>、<td> </td>、甚至 <td style="display:none"></td> —— 只要 DOM 存在,就算占位
document.querySelectorAll('tr')[0].children.length 和 document.querySelectorAll('tr')[1].children.length 必须相等和 colspan 混用时,列数逻辑必须手动对齐
一个单元格同时设 rowspan="2" 和 colspan="3",等于吞掉 2×3=6 个原始格子。周围所有行、列都要按这个“吞掉量”做减法。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- 当前行:其余单元格的
colspan总和 + 3 必须等于总列数(如共5列,则其余colspan和只能是2) - 下一行:该单元格覆盖的3列位置全部留空,不能写
<td>,也不能用 <code>colspan="0"(无效) <thead> 和 <code><tbody> 展开后的逻辑列数必须一致,否则 <code>border-collapse: collapse下边框会断开真正难的不是写属性,而是从第一行就开始画草图:标出哪几行属于同一组、哪列是固定标签、哪几列是数据列。靠 JS 扫描后动态加
rowspan基本不可靠——结构错位后,连querySelector('td:nth-child(3)')都可能选不到目标单元格。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










