javascript - 如何在不影响性能的情况下将大量数据加载到数据表

标签 javascript jquery html performance datatables

当我加载较少的数据(300 行)时,此脚本工作正常。但是当我尝试加载更多数据(3000 行)时,它会花费更多时间并且浏览器会显示一些脚本减慢错误。请帮我解决这个问题

HTML表格如下图

<table class="table table-bordered" id="db_new_table">
     <thead>
        <tr>
          <th> Key </th>
           <th> Value </th>
        </tr>
     </thead>
     <tbody>
         //to here loading data from js     
     </tbody>
</table>

我的 JS 脚本如下所示

//Intializing database
    var table_new = $('#db_new_table').DataTable({            
      "bSortClasses": false,           
      "lengthMenu": [ 500, 1000, 1500, 2000 ],
      "pageLength": 500,
      "deferLoading": coutnt,            
    });


//Loading data to datatable   
var j=1;        
$.each((this.data), function(i, key){  
  var tr = '<tr class="table_row" data-id='+j+'> <td>'+ i +'</td> <td>'+ key +'</td> </tr>'; 

  table_new.rows.add($(tr)).draw();            
  j++;
});

最佳答案

3000 行是相当多的浏览器要处理的 DOM 元素。您可以尝试使用虚拟滚动来防止浏览器变慢或崩溃。虚拟滚动只会渲染您在屏幕上看到的 DOM 元素,并在您滚动时替换数据,不会添加更多的 DOM 元素。

你可以试试这个虚拟滚动库 https://clusterize.js.org/

如果您的请求花费太多时间,您可能会遇到超时问题。在这种情况下,您可以考虑使用分页或无限滚动

关于javascript - 如何在不影响性能的情况下将大量数据加载到数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51983149/

相关文章:

javascript - 如何使用 javascript 和 html 复制不同的 div?

javascript - 重置变量 onclick 事件

javascript - 将数据从 Django View 获取到 JS 以在页面上执行的最佳实践?

javascript - Firefox WebExtension内容脚本: TypeError: browser.运行时未定义

javascript - 用作事件处理程序和初始化的 jQuery 函数

javascript - 如何防止在页面中显示隐藏表单

javascript - 如何组合两个 javascript 以包含对服务器时间而不是用户时间的 ajax 调用?

javascript - ANSI 日期(COBOL 整数日期)到当前日期

聚光灯后 jQuery 重置回 css

javascript - 根据值更改 td 背景颜色