当前位置:首页 > JavaScript

js 实现分页

2026-02-28 18:26:16JavaScript

分页实现方法

客户端分页

客户端分页适用于数据量较小的情况,所有数据一次性加载到前端,通过JavaScript进行分页展示。

// 示例数据
const data = Array.from({length: 100}, (_, i) => ({id: i, name: `Item ${i}`}));

// 分页函数
function paginate(array, pageSize, pageNumber) {
  return array.slice((pageNumber - 1) * pageSize, pageNumber * pageSize);
}

// 使用示例
const pageSize = 10;
const currentPage = 1;
const paginatedData = paginate(data, pageSize, currentPage);

服务器端分页

对于大数据量,通常采用服务器端分页,前端只需传递页码和每页条数。

// 前端请求示例
async function fetchPaginatedData(page, size) {
  const response = await fetch(`/api/data?page=${page}&size=${size}`);
  return response.json();
}

// 使用示例
const pageSize = 10;
const currentPage = 1;
fetchPaginatedData(currentPage, pageSize).then(data => {
  console.log(data);
});

分页组件实现

完整的分页组件通常包含页码导航和数据显示。

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

  getCurrentPageData() {
    const start = (this.currentPage - 1) * this.itemsPerPage;
    const end = start + this.itemsPerPage;
    return this.data.slice(start, end);
  }

  nextPage() {
    if (this.currentPage < this.totalPages) {
      this.currentPage++;
    }
    return this.getCurrentPageData();
  }

  prevPage() {
    if (this.currentPage > 1) {
      this.currentPage--;
    }
    return this.getCurrentPageData();
  }

  goToPage(page) {
    if (page >= 1 && page <= this.totalPages) {
      this.currentPage = page;
    }
    return this.getCurrentPageData();
  }
}

UI渲染示例

结合HTML渲染分页控件。

<div id="data-container"></div>
<div id="pagination-controls"></div>

<script>
  const data = [...]; // 你的数据
  const pagination = new Pagination(data, 10);

  function render() {
    // 渲染当前页数据
    document.getElementById('data-container').innerHTML = 
      pagination.getCurrentPageData().map(item => 
        `<div>${item.name}</div>`
      ).join('');

    // 渲染分页控件
    let controls = '';
    for (let i = 1; i <= pagination.totalPages; i++) {
      controls += `<button onclick="changePage(${i})">${i}</button>`;
    }
    document.getElementById('pagination-controls').innerHTML = controls;
  }

  function changePage(page) {
    pagination.goToPage(page);
    render();
  }

  render();
</script>

注意事项

  • 对于大数据集,服务器端分页是更好的选择
  • 分页组件应考虑添加页面跳转、每页条数调整等功能
  • 移动端需要考虑触摸友好的分页控件设计
  • 分页状态应保持与URL同步以便分享和刷新

js 实现分页

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

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现分页功能代码

js实现分页功能代码

分页功能实现方法 客户端分页(前端处理数据) 适用于数据量较小且已全部加载到前端的情况。 // 示例数据 const data = Array.from({length: 100}, (_, i)…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置…

h5实现左右分页

h5实现左右分页

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

vue实现页面分页

vue实现页面分页

Vue实现页面分页的方法 使用Element UI的分页组件 Element UI提供了现成的分页组件el-pagination,适合快速集成。以下是一个示例代码: <template>…