当前位置:首页 > 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实现下拉分页思想

vue实现下拉分页思想

实现下拉分页的基本思想 下拉分页(Infinite Scroll)是一种常见的分页加载方式,当用户滚动到页面底部时自动加载下一页数据。Vue 中可以通过监听滚动事件或使用第三方库实现。 监听滚动事件…

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callbac…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

vue实现后台分页

vue实现后台分页

Vue 实现后台分页的方法 分页组件与数据绑定 在 Vue 中实现后台分页通常需要结合分页组件和后端 API。使用 el-pagination(Element UI)或自定义分页组件,通过 v-mod…

分页用vue实现

分页用vue实现

实现分页的基本思路 在Vue中实现分页功能,通常需要以下几个核心部分:数据列表、当前页码、每页显示数量、总页数计算、页码切换逻辑。以下是一个完整的实现方案。 分页组件代码示例 <templat…