当前位置:首页 > 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;

性能优化建议

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

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

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

原生js实现分页思路

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

相关文章

vue router实现分页

vue router实现分页

Vue Router 实现分页的方法 在 Vue.js 中,可以通过 Vue Router 实现分页功能,通常需要结合路由参数和动态路由匹配。以下是几种常见的实现方式: 使用查询参数实现分页 在路…

分页实现vue

分页实现vue

分页实现方法(Vue) 使用Element UI分页组件 安装Element UI库后,可以直接使用其分页组件。在模板中添加el-pagination,通过v-model绑定当前页码,设置page-s…

php分页代码简单实现

php分页代码简单实现

基本分页实现 在PHP中实现分页功能通常需要结合MySQL的LIMIT子句。以下是一个基础实现示例: <?php // 数据库连接 $conn = mysqli_connect("localh…

php实现分页功能

php实现分页功能

PHP实现分页功能的方法 数据库查询与分页逻辑 使用SQL的LIMIT和OFFSET实现分页。假设每页显示10条数据,当前页码为$page: $perPage = 10; $page = isset…

php实现的分页

php实现的分页

PHP 实现分页的方法 基本分页逻辑 分页的核心在于计算总页数、当前页码以及数据偏移量。假设每页显示 10 条数据: $current_page = isset($_GET['page']) ?…

vue实现列表分页

vue实现列表分页

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