我有一个由转发器填充的表,最初隐藏了许多行。我有一个锚点,可以触发Javascript函数来更改网格中的所有行。功能如下:
function ExpandAll() {
var elem = document.getElementById("repeaterTable");
var rows = elem.rows;
for (var i = 1; i < rows.length; i++) {
rows.item(i).style.visibility = 'visible';
rows.item(i).style.display = '';
}
}
这一切都有效,但是这个函数大约需要12-13秒来循环遍历网格中的~450行。显然我不能忍受这么长时间。有没有办法更快地做到这一点?隐藏的行目前有:
style.visibility = 'hidden';
style.display = 'none';
(因此我必须将显示设置为'')
编辑:这是一个具有“父”和“子”行的可折叠表。所有父行始终可见,并且可以基于图像单击扩展或折叠子行(每个父行约3-15行)。我还提供了一次扩展所有父行的锚点。请参阅下图,了解其布局方式:
alt text http://img85.imageshack.us/img85/9586/counties.png
此外,这是由ASP.NET转发器定义来填充表,因此我无法将每个父行的子行“分组”在一起。从本质上讲,该表在子行和父行之间没有任何区别。
答案 0 :(得分:1)
假设只有两个状态“全部可见”和“一个预选的组可见”,那么就忘记了对各行进行调整。
有以下内容:
<table class="short" id="repeaterTable">
和
<tr class="longOnly">
然后(在你的样式表中):
table.short tr.longOnly { display: none; }
当你想扩展时:
document.getElementById('repeaterTable').className = '';