当前位置:首页 > JavaScript

js 分页 实现

2026-02-01 12:34:46JavaScript

分页实现的基本原理

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

前端分页实现

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

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组件,包含页码导航:

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 分页 实现

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

相关文章

vue实现选项卡分页

vue实现选项卡分页

Vue实现选项卡分页的方法 使用动态组件切换 通过Vue的<component :is="currentTab">动态加载不同组件,结合v-for循环渲染选项卡标题,点击时切换curre…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

vue elementui实现分页

vue elementui实现分页

使用 Element UI 实现 Vue 分页功能 Element UI 提供了 el-pagination 组件,可以方便地实现分页功能。以下是具体实现步骤: 安装 Element UI 确保项…

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以…