当前位置:首页 > JavaScript

分页实现js

2026-02-01 20:28:53JavaScript

分页实现的基本思路

分页功能通常用于处理大量数据,将数据分成多个页面展示,提升用户体验。前端分页的实现需要结合数据获取和页面渲染逻辑。

客户端分页实现

假设已有完整数据数组,仅需前端分页展示:

分页实现js

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

// 分页参数
let currentPage = 1;
const pageSize = 10;

// 获取当前页数据
function getCurrentPageData() {
  const start = (currentPage - 1) * pageSize;
  const end = start + pageSize;
  return allData.slice(start, end);
}

// 渲染分页数据
function renderPage() {
  const pageData = getCurrentPageData();
  // 渲染逻辑...
  console.log(`当前页数据:`, pageData);
}

// 分页控件事件
document.getElementById('prev').addEventListener('click', () => {
  if (currentPage > 1) {
    currentPage--;
    renderPage();
  }
});

document.getElementById('next').addEventListener('click', () => {
  if (currentPage < Math.ceil(allData.length / pageSize)) {
    currentPage++;
    renderPage();
  }
});

服务端分页实现

从后端API获取分页数据更为常见,需要传递分页参数:

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

// 使用示例
fetchPaginatedData(1, 10).then(data => {
  console.log('第一页数据:', data.items);
  console.log('总页数:', data.totalPages);
});

分页UI组件实现

结合HTML创建完整分页控件:

分页实现js

<div id="pagination">
  <button id="prev">上一页</button>
  <span id="pageInfo">第1页</span>
  <button id="next">下一页</button>
</div>

<script>
  const pagination = {
    currentPage: 1,
    totalPages: 10,
    updateUI() {
      document.getElementById('pageInfo').textContent = 
        `第${this.currentPage}页/共${this.totalPages}页`;
      document.getElementById('prev').disabled = this.currentPage === 1;
      document.getElementById('next').disabled = this.currentPage === this.totalPages;
    }
  };

  document.getElementById('prev').addEventListener('click', () => {
    if (pagination.currentPage > 1) {
      pagination.currentPage--;
      pagination.updateUI();
      // 加载数据...
    }
  });

  document.getElementById('next').addEventListener('click', () => {
    if (pagination.currentPage < pagination.totalPages) {
      pagination.currentPage++;
      pagination.updateUI();
      // 加载数据...
    }
  });
</script>

分页库的使用

现有库如react-paginate(React)或v-pagination(Vue)可简化开发:

React示例:

import ReactPaginate from 'react-paginate';

function MyComponent() {
  const handlePageClick = (data) => {
    const selectedPage = data.selected + 1;
    console.log('跳转到页:', selectedPage);
  };

  return (
    <ReactPaginate
      previousLabel={'上一页'}
      nextLabel={'下一页'}
      breakLabel={'...'}
      pageCount={20}
      marginPagesDisplayed={2}
      pageRangeDisplayed={5}
      onPageChange={handlePageClick}
      containerClassName={'pagination'}
      activeClassName={'active'}
    />
  );
}

性能优化建议

对于大数据量考虑虚拟滚动技术替代传统分页 分页请求添加防抖处理避免频繁请求 缓存已加载页面数据减少重复请求 预加载相邻页面数据提升用户体验

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

相关文章

js实现跳转

js实现跳转

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

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableElem…

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swip…

vue前端分页怎么实现

vue前端分页怎么实现

使用 Element UI 的分页组件 Element UI 提供了现成的分页组件 <el-pagination>,可以快速实现分页功能。需要安装 Element UI 并注册组件。 &…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…