有時為了讓展示的資料,會將 行及列 的背景顏色,讓使用者較易查看
在下使用好簡單的 Javascript 及 HTML 來達到效果
function setHighlight(td, index, color){
    var tr = td.parentNode;
    var table = tr.parentNode;
    if (!(table instanceof HTMLTableElement)){
        table = table.parentNode;
    }
    var cols = table.getElementsByTagName('col');
    cols[index].style.backgroundColor = color;
    tr.style.backgroundColor = color;
}<table border="1"> <col width="100"/> <col width="100"/> <col width="100"/> <col width="100"/> <col width="100"/> <thead> <tr> <th></th> <th>列1</th> <th>列2</th> <th>列3</th> <th>列4</th> </tr> </thead> <tbody> <tr> <th>行1</th> <td onmouseover="setHighlight(this, 1, '#ffff88');" onmouseout="setHighlight(this, 1, null);">11</td> <td onmouseover="setHighlight(this, 2, '#ffff88');" onmouseout="setHighlight(this, 2, null);">12</td> <td onmouseover="setHighlight(this, 3, '#ffff88');" onmouseout="setHighlight(this, 3, null);">13</td> <td onmouseover="setHighlight(this, 4, '#ffff88');" onmouseout="setHighlight(this, 4, null);" rowspan="2">14</td> </tr> <tr> <th>行2</th> <td onmouseover="setHighlight(this, 1, '#ffff88');" onmouseout="setHighlight(this, 1, null);" colspan="2">21</td> <td onmouseover="setHighlight(this, 3, '#ffff88');" onmouseout="setHighlight(this, 3, null);">23</td> </tr> <tr> <th>行3</th> <td onmouseover="setHighlight(this, 1, '#ffff88');" onmouseout="setHighlight(this, 1, null);">31</td> <td onmouseover="setHighlight(this, 2, '#ffff88');" onmouseout="setHighlight(this, 2, null);">32</td> <td onmouseover="setHighlight(this, 3, '#ffff88');" onmouseout="setHighlight(this, 3, null);" rowspan="2" colspan="2">33</td> </tr> <tr> <th>行4</th> <td onmouseover="setHighlight(this, 1, '#ffff88');" onmouseout="setHighlight(this, 1, null);">41</td> <td onmouseover="setHighlight(this, 2, '#ffff88');" onmouseout="setHighlight(this, 2, null);">42</td> </tr> </tbody> </table>
| 列1 | 列2 | 列3 | 列4 | |
|---|---|---|---|---|
| 行1 | 11 | 12 | 13 | 14 | 
| 行2 | 21 | 23 | ||
| 行3 | 31 | 32 | 33 | |
| 行4 | 41 | 42 | ||
但這種方法當 tr 或 td 已經設定 背景顏色 由於 col 與 tr 或 td 沒有父或子項目關係,背景顏色則不能覆蓋
而 td 比 tr 優先,因此 tr 不能覆蓋 td 的背景顏色
| 列1 | 列2 | 列3 | 列4 | |
|---|---|---|---|---|
| 行1 | 11 | 12 | 13 | 14 | 
| 行2 | 21 | 23 | ||
| 行3 | 31 | 32 | 33 | |
| 行4 | 41 | 42 | ||
沒有留言 :
張貼留言