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

实现分页的基本思路 分页功能通常需要处理数据分割、页码生成和用户交互。核心逻辑包括计算总页数、根据当前页截取数据、渲染页码按钮等。 前端分页实现(静态数据) 假设已有全部数据,仅需前端分页展示:…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 /…

vue router实现分页

vue router实现分页

使用 Vue Router 实现分页 在 Vue.js 项目中,可以通过 Vue Router 结合分页组件实现分页功能。以下是实现分页的几种方法: 使用路由参数传递页码 在路由配置中定义一个动态参…

js类实现

js类实现

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

vue实现后台分页

vue实现后台分页

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

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <htm…