我有一个函数,它在document.ready被调用,在一个大约有600行的由classic ASP生成的表格中循环。在“现代”浏览器(Chrome、Firefox、IE9 Beta)中,它可以在1.5-2秒内运行完毕。但在IE6中,需要5-7秒的时间,效果不好。
基本上,我正在对某些列中的单元格值进行加和,并给出小计。(我知道,这应该是在服务器端生成的,但某些聪明的人使用了调用视图的视图来开发此功能...)。
我使用了IE9的分析工具来确定瓶颈所在,看起来当调用jQuery的find和each时,瓶颈最为明显:
tr.find("td").each(function() {
&
tr.find("td").eq(ci).html(tot).css
如果有必要,我可以发布所有代码,但我想知道是否有更有效的方法循环遍历未命名的表格行和单元格?
表格如下:
32 47 0/0 0 8 1 1
32 47 -7 0/0 0 0 7
Totals -7 0/0 8 1 8
32 47 0/0 0 2 1 1
32 47 -7 0/0 0 3 7
Totals -7 0/0 5 1 8
我循环遍历表格行,如果我找到(td:first)=“Totals”,那么我将当前tr和前两个tr放入变量中,然后获取单元格并计算总数,并将这些总数放入相应的单元格中。
这一切都有效,但像我说的,在查找和每个过程中存在严重的瓶颈。
rows
和cells
属性是加速表格迭代的好方法。唯一需要补充的可能是在每个for
循环中缓存当前行和当前单元格。这些属性查找会累积起来。 - user113716i = 2
开始外层循环,只需要使用i += 3
而不是++i
。 - Ben Lee