使用CSS显示/隐藏html表列

我想显示一个带有控件的基本html表,以切换其他列的显示/隐藏:

<table id="mytable">

<tr>

<th>Column 1</th>

<th class="col1">1a</th>

<th class="col1">1b</th>

<th>Column 2</th>

<th class="col2">2a</th>

<th class="col2">2b</th>

</tr>

<tr>

<td>100</td>

<td class="col1">40</td>

<td class="col1">60</td>

<td>200</td>

<td class="col2">110</td>

<td class="col2">90</td>

</tr>

</table>

因此,默认情况下,列1和列2将是唯一显示的列-但是,当您单击列1时,我希望1a和1b切换,与列2和2a和2b相同。我可能最终会有更多的列和很多行-

因此,当我进行测试时,任何JavaScript循环方法都太慢而无法使用。

似乎足够快的唯一方法是设置一些CSS,如下所示:

table.hide1 .col1 { display: none; }

table.hide2 .col2 { display: none; }

table.hide3 .col3 { display: none; }

table.show1 .col1 { display: table-cell; }

table.show2 .col2 { display: table-cell; }

table.show3 .col3 { display: table-cell; }

然后在表标题单元格上设置onClick函数调用,这将触发切换-并确定将哪个“ cstable”类设置为“

mytable”,这将创建我正在寻找的切换效果。是否有一种简单的方法来设置此代码,以便代码可用于n#列?

回答:

这是我想出的,效果很好-而且速度很快。让我知道您是否可以想到改进方法。

的CSS

.col1 {display: none; }

.col2 {display: none; }

.col3 {display: none; }

table.show1 .col1 { display: table-cell; }

table.show2 .col2 { display: table-cell; }

table.show3 .col3 { display: table-cell; }

Java脚本

function toggleColumn(n) {

var currentClass = document.getElementById("mytable").className;

if (currentClass.indexOf("show"+n) != -1) {

document.getElementById("mytable").className = currentClass.replace("show"+n, "");

}

else {

document.getElementById("mytable").className += " " + "show"+n;

}

}

和html片段:

<table id="mytable">

<tr>

<th onclick="toggleColumn(1)">Col 1 = A + B + C</th>

<th class="col1">A</th>

<th class="col1">B</th>

<th class="col1">C</th>

<th onclick="toggleColumn(2)">Col 2 = D + E + F</th>

<th class="col2">D</th>

<th class="col2">E</th>

<th class="col2">F</th>

<th onclick="toggleColumn(3)">Col 3 = G + H + I</th>

<th class="col3">G</th>

<th class="col3">H</th>

<th class="col3">I</th>

</tr>

<tr>

<td>20</td>

<td class="col1">10</td>

<td class="col1">10</td>

<td class="col1">0</td>

<td>20</td>

<td class="col2">10</td>

<td class="col2">8</td>

<td class="col2">2</td>

<td>20</td>

<td class="col3">10</td>

<td class="col3">8</td>

<td class="col3">2</td>

</tr>

</table>

回答:

不,差不多了。从理论上讲,您可以使用visibility:

collapse某些方法<col>来做到这一点,但是浏览器的支持并不止于此。

为了提高你已经稍微得到了,你可以使用table-layout:

fixed<table>,让浏览器使用更简单,更快速,更可预见的固定表格的布局算法。你也可以删除.show规则时,细胞不进行display:

none.hide规则将自动出现display: table-cell。允许表显示恢复为默认值而不是显式设置它可以避免IE <8中的问题,在IE

<8中,不支持表显示值。

以上是 使用CSS显示/隐藏html表列 的全部内容, 来源链接: utcz.com/qa/422611.html

回到顶部