使用JavaScript更改表中所有行的可见性

时间:2010-01-18 20:02:17

标签: javascript

我有一个由转发器填充的表,最初隐藏了许多行。我有一个锚点,可以触发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转发器定义来填充表,因此我无法将每个父行的子行“分组”在一起。从本质上讲,该表在子行和父行之间没有任何区别。

1 个答案:

答案 0 :(得分:1)

假设只有两个状态“全部可见”和“一个预选的组可见”,那么就忘记了对各行进行调整。

有以下内容:

<table class="short" id="repeaterTable">

<tr class="longOnly">

然后(在你的样式表中):

table.short tr.longOnly { display: none; }

当你想扩展时:

document.getElementById('repeaterTable').className = '';