为什么要用js呢?table本身就有合并单元格的功能,其实如果你用js也是给table添加对应的样式。具体代码如下:
<style>table{ border-collapse:collapse}
table td{ border:2px solid #ddd width:50px height:25px text-align:center}
</style>
<table>
<tr>
<td colspan="2">123</td> //横向合并单元格
<td>456</td>
<td>789</td>
</tr>
<tr>
<td rowspan="2">123</td> //竖向合并单元格
<td>456</td>
<td>456</td>
<td>456</td>
</tr>
<tr>
<td>123</td>
<td>456</td>
<td>456</td>
</tr>
</table>
首先,tableUI中有几个重要的方法: printGrid 画出单元格的框框paintCell 画出单元格的那个矩形columnAtPoint(一个点) 返回指定位置属于表格中的哪个列rowAtPoint(一个点) 返回指定位置属于表格中的哪个行而这两个功能的实现都依赖于getCellRect这个方法,getCellRect的作用是返回位于 row行 column列的单元格矩形,返回的矩形的大小决定了画出来的单元格的大小。所以问题就简单了,只要创造一种新的数据结构,把合并信息加进去,然后重载getCellRect方法,使其返回的值体现了合并单元格。当用户选择单元格时,对于被覆盖的单元格,重载rowAtPoint和columnAtPoint方法,使得其返回其所在的合并单元格的起始行列。大体上就是这样了。