【发布时间】:2011-07-09 04:14:22
【问题描述】:
我正在尝试使用 Javascript 动态隐藏/取消隐藏多个表格行来模拟折叠/展开。以下是相关代码sn-ps:
function selectionFilter(check, filter){
var elem = document.getElementById('myScrollTable').rows;
for(i = 0; i < elem.length; i++){
var type = elem[i].getAttribute('type');
if(type== filter){
if(check == true){
elem[i].style.display='';
}else{
elem[i].style.display='none';
}
}
}
}
这里是示例 HTML:
<input type="checkbox" checked="true" value="t1" onclick="selectionFilter(this.checked, this.value);">some type 1</input >
<input type="checkbox" value="t2" onclick="selectionFilter(this.checked, this.value);">some type 2</input ><br><br>
<table cellspacing="1" cellpadding="2" class="" id="myScrollTable">
<thead>
<tr>
<th>Data1</th>
<th>Data2</th>
</tr>
</thead>
<tbody>
<tr type="t1">
<td rowspan="50"><a href="something1">something1</a></td><td><a href="something2">something2</a></td>
</tr>
<tr type="t1">
<td><a href="something2">something2</a></td>
</tr>
.
.
<tr type="t2" style="display:none;">
<td rowspan="50"><a href="something1">something1</a></td><td><a href="something2">something2</a></td>
</tr>
<tr type="t2" style="display:none;">
<td><a href="something2">something2</a></td>
</tr>
.
.
</tbody>
</table>
在 Firefox 中一切正常。但是在 IE 中,第一次隐藏任何行后,当它被取消隐藏时,它会在底部附加一些额外的空间。不使用行跨度时不会发生这种情况。我尝试了很多东西,但无法摆脱多余的空间。
如果有人能给我一些提示,我将不胜感激。
【问题讨论】:
-
可能不相关,但在该 HTML 示例中,您似乎缺少
type="t2"附近的开头<tr>标记。 -
感谢您的告知,这是真的。我即时编写了示例,它可能不是真正的工作版本。
标签: html internet-explorer html-table row hide