当前位置:首页 > JavaScript

js 实现分页

2026-02-28 18:26:16JavaScript

分页实现方法

客户端分页

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

js 实现分页

// 示例数据
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);

服务器端分页

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

js 实现分页

// 前端请求示例
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 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js实现求导

js实现求导

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

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…