You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Datatable静态HTML分页前加载全部行,刷新页面如何默认仅展示10行?

Datatable刷新先加载全量数据再分页的修复方案

出现这个问题的核心原因是:你先把全量数据渲染成了HTML表格的DOM节点,之后才初始化Datatable。浏览器会先渲染完整的表格内容,等Datatable初始化完成接管表格后才会做分页截断,所以会出现先闪全量数据再显示10行的情况。
可以根据你的使用场景选择以下任意一种方案修复:

方案1:使用服务端分页(推荐,适合数据量过万的场景)

开启serverSide参数,由后端接口返回当前页的10条数据,Datatable初始化时只会拉取当前页数据,不会加载全量内容:

$('#你的表格ID').DataTable({
  processing: true, // 加载中提示
  serverSide: true, // 开启服务端分页
  ajax: '/你的后端数据接口地址',
  pageLength: 10 // 默认每页10条
});

对应的HTML表格tbody初始保持为空即可,不需要提前写入所有行数据。

方案2:隐藏表格直到Datatable初始化完成(适合不想改现有逻辑的客户端分页场景)

给表格默认设置隐藏,等Datatable初始化完成后再显示,用户就看不到全量数据加载的过程:
HTML部分:

<table id="你的表格ID" style="display: none;">
  <thead>
    <!-- 表头内容 -->
  </thead>
  <tbody>
    <!-- 你的全量行数据 -->
  </tbody>
</table>

JS初始化部分:

$('#你的表格ID').DataTable({
  pageLength: 10,
  initComplete: function() {
    // 初始化完成后显示表格
    $('#你的表格ID').show();
  }
});

方案3:通过JS传入全量数据(适合客户端分页、数据量不大的场景)

不要把全量数据提前写到HTML的tbody里,而是把数据存在JS数组中,初始化时直接传给Datatable,避免浏览器先渲染全量DOM:

// 全量数据存在JS变量中
const allData = [
  ['行1列1', '行1列2'],
  ['行2列1', '行2列2'],
  // 剩余所有数据
];

$('#你的表格ID').DataTable({
  data: allData,
  pageLength: 10
});

对应的HTML表格tbody初始保持为空即可。

内容的提问来源于stack exchange,提问作者Ahuahu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:06:03