使用jquery在表中迭代超过500和15列的行

时间:2013-08-16 10:31:51

标签: javascript jquery loops dom

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

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

问题不是要知道如何迭代和更改单个列的属性,而是如何优化此过程。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

通常,如果您正在执行时间要求严格的任务,请不要使用jQuery。每个$('.classname')执行至少20条jQuery行,特别是在IE8的情况下,还有大量的本地迭代文档。

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

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

  • 一般使用最小样式
  • 尽量避免设置innerHTML / innerText,请使用createElement() 和/或createTextNode()appendChild()和/或insertBefore() 代替。
  • 避免使用内联样式,而是更改类名,甚至使用直接CSS规则操作。
  • 使用getElementsBy/Tag/Class/Name()时尽可能地缓存元素。
  • 尽可能使用cahched table.rowstable.rows[n].cells个收藏。
  • 考虑一次只显示表格的一部分,它会使渲染更快。

答案 1 :(得分: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
   }  
}