行スパンを使用して 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 では、一番右の列の rowspan に問題があるようです。目的の効果を得るには、別の列を追加する必要がありました。
編集2:
以下で説明するDataTables プラグインfnMultiRowspan
でfnFakeRowspan
は、実際には望ましい結果が得られません。どちらのプラグインも、動作する前にテーブルを正しい方法でソートする必要があります。fnFakeRowspan
1 つの列でのみ機能しfnMultiRowspan
、以下の結果が得られます (ホットとイエローは 2 番目の列で複製されます)。
+-----------+---------+
| | Red |
| Apple | Green |
| | Yellow |
|-----------+---------|
| Charizard | Hot |
| | Pokémon |
|-----------+---------|
| Sun | Yellow |
| | Hot |
+-----------+---------+