当前位置:首页 > JavaScript

原生js实现分页思路

2026-03-01 16:47:47JavaScript

分页功能的基本思路

分页功能的核心是将大量数据分割成多个页面显示,通常需要以下关键参数:总数据量(total)、每页显示条数(pageSize)、当前页码(currentPage)。实现时需要计算总页数,并根据当前页码动态渲染数据。

计算总页数

总页数通过总数据量除以每页显示条数并向上取整获得。数学公式如下:

[ totalPages = \lceil \frac{total}{pageSize} \rceil ]

JavaScript实现代码:

const totalPages = Math.ceil(total / pageSize);

数据切片处理

根据当前页码和每页条数,从总数据中截取对应片段。数组切片公式:

[ startIndex = (currentPage - 1) \times pageSize ] [ endIndex = startIndex + pageSize ]

代码实现:

const paginatedData = data.slice(
  (currentPage - 1) * pageSize,
  currentPage * pageSize
);

分页器DOM渲染

创建分页按钮的典型逻辑:

  • 显示首页和上一页按钮(当前页不是第一页时)
  • 显示当前页前后各2页的页码按钮
  • 显示下一页和末页按钮(当前页不是最后一页时)

示例代码片段:

function renderPagination() {
  let html = '';
  if (currentPage > 1) {
    html += `<button onclick="changePage(1)">首页</button>`;
    html += `<button onclick="changePage(${currentPage - 1})">上一页</button>`;
  }

  // 页码按钮逻辑
  for (let i = Math.max(1, currentPage - 2); 
       i <= Math.min(totalPages, currentPage + 2); 
       i++) {
    html += `<button class="${i === currentPage ? 'active' : ''}" 
             onclick="changePage(${i})">${i}</button>`;
  }

  if (currentPage < totalPages) {
    html += `<button onclick="changePage(${currentPage + 1})">下一页</button>`;
    html += `<button onclick="changePage(${totalPages})">末页</button>`;
  }
  document.getElementById('pagination').innerHTML = html;
}

事件处理与状态更新

页码变更时需要更新当前页码并重新渲染数据和分页器:

function changePage(page) {
  currentPage = page;
  renderData();
  renderPagination();
}

完整实现示例

// 初始化参数
let data = [...]; // 原始数据数组
let currentPage = 1;
const pageSize = 10;

function initPagination() {
  renderData();
  renderPagination();
}

function renderData() {
  const start = (currentPage - 1) * pageSize;
  const pageData = data.slice(start, start + pageSize);
  // 渲染pageData到页面...
}

function renderPagination() {
  const totalPages = Math.ceil(data.length / pageSize);
  // ...同上文分页器渲染逻辑
}

// 页面加载时初始化
window.onload = initPagination;

性能优化建议

对于大数据量场景,可以考虑以下优化:

原生js实现分页思路

  • 使用虚拟滚动技术替代传统分页
  • 实现异步加载数据
  • 添加页码输入框跳转功能
  • 缓存已加载的页面数据

这种实现方式不依赖任何第三方库,适合需要轻量级解决方案的场景。根据实际需求可以扩展更多功能,如动态修改pageSize、添加页面跳转输入框等。

标签: 分页思路
分享给朋友:

相关文章

vue 分页 实现

vue 分页 实现

Vue 分页实现方法 使用 Element UI 分页组件 Element UI 提供了现成的分页组件 el-pagination,适合快速集成。需要先安装 Element UI 库。 安装 Ele…

vue实现列表分页

vue实现列表分页

Vue 列表分页实现方法 基础分页实现 安装依赖(如使用第三方库) npm install vue-paginate 模板部分示例 <template> <div>…

vue 分页功能实现

vue 分页功能实现

分页功能实现方法 使用 Element UI 的分页组件 Element UI 提供了现成的分页组件 el-pagination,可以快速实现分页功能。 安装 Element UI: npm in…

vue分页插件实现

vue分页插件实现

Vue 分页插件实现方法 使用现成组件库(推荐) Element UI、Ant Design Vue 等主流库已提供成熟分页组件,可直接集成: <template> <el-p…

vue怎么实现分页

vue怎么实现分页

Vue 分页实现方法 基于 Element UI 的分页组件 Element UI 提供了现成的分页组件 el-pagination,适合快速集成。 安装 Element UI: npm inst…

vue 异步分页实现

vue 异步分页实现

异步分页实现方法 在Vue中实现异步分页通常涉及与后端API的交互,前端需要处理分页逻辑和数据加载。以下是常见的实现方式: 使用axios获取分页数据 通过axios与后端API通信,获取分页数据并…