1

我有一个包含可变数量单元格的 html 表。为了这个例子,我会说 20x20(虽然它更大)。

这是通过 php 生成的,用于填充表的数据集已从 mysql 中提取。这些单元格中的每一个都有一个数值,并且需要专门将其放在 is 所在的位置。因此,如果单元格 A(10,15) 的值为 100,则该 100 需要专门在 10,15 上-在生成表格时,我无法分析定位。

现在,这些单元格中的许多单元格都有其他具有相同值的相邻单元格。无论是水平的还是垂直的。

我需要做的是合并此表中具有相同值的相邻单元格。这可以是水平的,垂直的,或两者兼而有之,但仍然保持它是一个矩形 - 没什么太时髦的。

例如,如果我有

0 1 1 1 0
2 2 5 0 4
5 5 5 1 4

我需要根据值修改 colspan 和/或 rowspan - 需要注意的是,在生成时,我实际上可以为这些单元中的每一个定义类或 id。同样在生成过程中,我可以确定是否会有一个以上的系列连续出现,但我无法知道下面的行中是否会有一个。

ps:我确实做了一些研究,发现了这个线程。 复杂的表合并 javascript & jquery 算法

修改了 jsfiddle 示例以影响单元格的 colspan 和 rowspan 但是当它需要合并两个以上的单元格时它似乎会翻转 -

对此事有什么建议的方法?

先感谢您

4

1 回答 1

1

分两次执行(O(n2)),首先在宽度上遍历您的数组并检测相邻单元格的数量(并将同一单元格之后的单元格设置为零):

0(1) 1(3) 1(0) 1(0) 0(1)
2(2) 2(0) 5(1) 0(1) 4(1)
5(3) 5(0) 5(0) 1(1) 4(1)

然后,垂直遍历它,找到两个数字相同(并且计数> 0)的单元格,你会得到:

0(1,1) 1(3,1) 1(0,0) 1(0,0) 0(1,1)
2(2,1) 2(0,0) 5(1,0) 0(1,1) 4(1,2)
5(3,1) 5(0,0) 5(0,0) 1(1,1) 4(1,0)

现在,这对的第一个数字是 colspan,第二个是 rowspan。如果其中一个数字为 0,则不输出。

0 1---- 0
2-- 5 0 4
5---- 1 |
于 2012-07-06T13:26:20.390 回答