当前位置:首页 > JavaScript

js 分页 实现

2026-02-01 12:34:46JavaScript

分页实现的基本原理

分页的核心是将大量数据分割成多个页面显示,通常需要计算总页数、当前页码及每页数据范围。前端分页可通过数组切片实现,后端分页则依赖数据库的LIMITOFFSET查询。

前端分页实现

通过JavaScript对现有数组进行分页处理,适合数据量较小的场景:

js 分页 实现

function paginate(array, pageNumber, pageSize) {
  const startIndex = (pageNumber - 1) * pageSize;
  return array.slice(startIndex, startIndex + pageSize);
}

const data = [1, 2, 3, 4, 5, 6, 7, 8];
const currentPage = 2;
const itemsPerPage = 3;
const pagedData = paginate(data, currentPage, itemsPerPage); // 输出 [4, 5, 6]

后端分页实现

结合AJAX请求与后端API,典型的分页参数包括pagepageSize

async function fetchPaginatedData(page = 1, pageSize = 10) {
  const response = await fetch(`/api/data?page=${page}&limit=${pageSize}`);
  return response.json();
}

// 使用示例
fetchPaginatedData(2, 5).then(data => {
  console.log(data.items); // 当前页数据
  console.log(data.totalPages); // 总页数
});

分页组件示例

实现一个简单的分页UI组件,包含页码导航:

js 分页 实现

class Pagination {
  constructor(totalItems, itemsPerPage, currentPage = 1) {
    this.totalItems = totalItems;
    this.itemsPerPage = itemsPerPage;
    this.currentPage = currentPage;
    this.totalPages = Math.ceil(totalItems / itemsPerPage);
  }

  render() {
    const paginationEl = document.createElement('div');
    paginationEl.className = 'pagination';

    for (let i = 1; i <= this.totalPages; i++) {
      const pageEl = document.createElement('button');
      pageEl.textContent = i;
      pageEl.className = i === this.currentPage ? 'active' : '';
      pageEl.addEventListener('click', () => this.goToPage(i));
      paginationEl.appendChild(pageEl);
    }

    return paginationEl;
  }

  goToPage(page) {
    this.currentPage = page;
    // 触发数据加载或更新UI
  }
}

性能优化建议

对于大数据量分页,避免使用前端分页,优先采用后端分页。数据库查询时建议使用游标分页(Cursor-based Pagination)替代传统的LIMIT/OFFSET,尤其适合无限滚动场景:

-- 传统分页(性能随offset增大而下降)
SELECT * FROM table LIMIT 10 OFFSET 20;

-- 游标分页(基于最后一条记录的ID)
SELECT * FROM table WHERE id > 20 LIMIT 10;

分页样式与交互

通过CSS增强分页组件的视觉反馈:

.pagination {
  display: flex;
  gap: 5px;
  margin-top: 20px;
}

.pagination button {
  padding: 5px 10px;
  border: 1px solid #ddd;
  background: white;
  cursor: pointer;
}

.pagination button.active {
  background: #007bff;
  color: white;
  border-color: #007bff;
}

标签: 分页js
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Promise…

vue 实现分页

vue 实现分页

分页实现方法 在Vue中实现分页功能,可以通过计算属性和方法结合来实现。以下是一个典型的分页实现方式: 模板部分 <template> <div> <ul…

php分页代码简单实现

php分页代码简单实现

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

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

h5实现左右分页

h5实现左右分页

实现左右分页的HTML5方法 在HTML5中实现左右分页效果可以通过多种方式完成,以下是几种常见的方法: 使用CSS Flexbox布局 Flexbox是一种现代的布局方式,可以轻松实现左右分页效果…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…