【发布时间】:2012-06-20 08:49:28
【问题描述】:
有没有办法确定或计算 HTML 表格是否以及如何使用行跨度进行规范化?或者如果有一个 JavaScript 库可以做到这一点。
例如,这张表:
+-----------+---------+
| Apple | Red |
| Apple | Green |
| Apple | Yellow |
| Sun | Yellow |
| Sun | Hot |
| Charizard | Hot |
| Charizard | Pokémon |
+-----------+---------+
会变成这样:
+-----------+---------+
| Apple | Red |
| | Green |
| |---------|
|-----------| Yellow |
| Sun |-------- |
|-----------| Hot |
| |---------|
| Charizard | Pokémon |
+-----------+---------+
看看这个小提琴,看看我的意思:http://jsfiddle.net/scorch/LZKkQ/
其中一些组合很容易手动计算,但有些可能相当复杂。我想尽可能地最小化表格,并确保没有其他组合可以进一步最小化它。即,最好只有表中的唯一值。
编辑:不要介意小提琴中的额外列。似乎 Firefox 在最右边一列的行跨度方面存在一些问题,所以我不得不添加另一个以达到预期的效果。
编辑 2:
下面提到的DataTables 插件fnMultiRowspan 和fnFakeRowspan 并没有真正得到想要的结果。两个插件都需要事先以正确的方式对表格进行排序才能工作; fnFakeRowspan 仅适用于一列,fnMultiRowspan 给出以下结果(热和黄色在第二列中重复):
+-----------+---------+
| | Red |
| Apple | Green |
| | Yellow |
|-----------+---------|
| Charizard | Hot |
| | Pokémon |
|-----------+---------|
| Sun | Yellow |
| | Hot |
+-----------+---------+
【问题讨论】:
-
你试过自己写吗?
-
是的,有一个 jquery 库 Datatable 具有此功能,请参阅:Visually grouping two or more cells in a row with the same content
-
我试图找到一种数学方法来做到这一点,但我似乎无法找到一种方法来得出一个方程式。
-
从可访问性的角度来看,您可以并且应该将数据单元格与复杂数据表中的标题单元格相关联,例如带有 col/rowspan 的数据表。它通过
id/headers以类似于表单中的 for/id 的方式完成。请参阅WCAG 2.0 Technique H43 了解更多信息。这将为算法增加工作量,但因为您已经在循环遍历表...... -
如果黄色也在喷火龙中呢?那么它会是什么样子呢?
标签: html html-table