javascript – IE8的DOM内存问题(插入大量JSON数据)

我正在开发一个小型Web实用程序,它显示来自某些数据库表的一些数据.

我在FF,Safari,Chrome上运行的实用程序很好……但是IE8上的内存管理是可怕的.最大的JSON请求将返回信息,以在浏览器中的表中创建大约5,000行(表中的3列).

我正在使用jQuery来获取数据(通过getJSON).要删除旧/现有表,我只是在做一个$(‘#my_table_tbody’).empty().要在表中添加新信息,在getJSON回调中,我只是将我正在创建的每个表行附加到变量,然后一旦我拥有它们,我使用$(‘#my_table_tbody’).append( myVar)将它添加到现有的tbody中.我不会在创建表行时添加它们,因为这似乎比只是一次添加它们要慢得多.

是否有人建议有人应该做什么试图向DOM添加数千行数据?我想远离分页,但我想知道我是否没有选择.

更新1
所以这是我在innerHTML建议之后尝试的代码:

/* Assuming a div called 'main_area' holds the table */
document.getElementById('main_area').innerHTML = '';

$.getJSON("my_server", {my: JSON, args: are, in: here}, function(j) {
   var mylength = j.length;
   var k =0;
   var tmpText = '';
   tmpText += /* Add the table, thead stuff, and tbody tags here */;
   for (k = mylength - 1; k >= 0; k--)
   {
      /* stack overflow wont let me type greater than & less than signs here, so just assume that they are there. */
      tmpText += 'tr class="' + j[k].row_class . '"   td class="col1_class" ' + j[k].col1 + ' /td td class="col2_class" ' + j[k].col2 + ' /td  td class="col3_class" ' + j[k].col3 + ' /td /tr';
   }

   document.getElementById('main_area').innerHTML = tmpText;
}

这是它的要点.我也试过只使用$.get请求,并让服务器发送格式化的HTML,并在innerHTML中设置它(即document.getElementById(‘main_area’).innerHTML = j;).

感谢所有的回复.我很遗憾你们都愿意提供帮助.

最佳答案

     var tmpText = [];
    for (k = mylength - 1; k >= 0; k--)
       {
          /* stack overflow wont let me type greater than & less than signs here, so just assume that they are there. */
    tmpText.push('anything you want')
          tmpText.push( 'tr class="' + j[k].row_class . '"   td class="col1_class" ' + j[k].col1 + ' /td td class="col2_class" ' + j[k].col2 + ' /td  td class="col3_class" ' + j[k].col3 + ' /td /tr';)
       }
    $('#main_area').html(tmpText.join(''))

    }

你不需要document.getElementById(‘main_area’).innerHTML =”;

这个方法是推入数组,然后加入并使用jquery html函数进行更新.这是我所知道的最快的方法.对不起这里的格式 – 这是我的第一篇文章,我想我会在这里回复一下stackoverflow.

点赞