使用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