0

这是挑战;如何使用 jquery/Javascript 在包含超过 500 行的表上迭代(+更改元素属性,同时这样做)?增加的挑战是浏览器是 IE8。

我尝试在桌子上使用 for 循环和 $.each ......我得到了工作,但它减慢了该死的 IE 并抛出脚本错误(错误:你想继续这个脚本吗?它可能会减慢你的计算机速度。 .bla bla bla)。

问题不在于知道如何迭代和更改各个列的属性,而在于如何优化这个过程。

任何帮助深表感谢。

4

2 回答 2

2

一般来说,如果你正在执行一个时间紧迫的任务,不要使用 jQuery。每个$('.classname')执行至少 20 行 jQuery 行,尤其是在 IE8 的情况下,还有大量的本机迭代文档。

在 IE8 中执行的脚本行有限制。默认情况下它执行一百万行,然后询问用户是否要继续执行脚本。此限制由注册表控制,但对于 Web 应用程序,增加价值当然没有用。

在 IE8 中渲染速度也是一个问题。

  • 一般使用最少的样式
  • 尽量避免设置innerHTML/ innerText,使用createElement() 和/或createTextNode()appendChild()/或insertBefore() 代替。
  • 避免使用内联样式,而是更改类名,甚至使用直接的 CSS 规则操作。
  • 使用时尽可能缓存元素getElementsBy/Tag/Class/Name()
  • 尽可能使用缓存table.rowstable.rows[n].cells集合。
  • 考虑一次只显示表格的一部分,这样可以加快渲染速度。
于 2013-08-16T11:12:59.690 回答
1

你试过这个吗

var table = document.getElementById("mytab1");
for (var i = 0, row; row = table.rows[i]; i++) {
   //iterate through rows
   //rows would be accessed using the "row" variable assigned in the for loop
   for (var j = 0, col; col = row.cells[j]; j++) {
     //iterate through columns
     //columns would be accessed using the "col" variable assigned in the for loop
   }  
}
于 2013-08-16T10:39:35.097 回答