当前位置:首页 > JavaScript

分页实现js

2026-02-01 20:28:53JavaScript

分页实现的基本思路

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

客户端分页实现

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

// 示例数据
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创建完整分页控件:

<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示例:

分页实现js

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
分享给朋友:

相关文章

vue实现分页条数

vue实现分页条数

实现分页条数的方法 在Vue中实现分页条数功能,通常需要结合分页组件和数据请求逻辑。以下是几种常见的实现方式: 使用Element UI的分页组件 Element UI提供了现成的分页组件,可以快…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

vue 分页的实现

vue 分页的实现

分页组件实现 使用Vue实现分页功能通常需要结合后端API和前端组件。以下是一种常见的实现方式: 模板部分 <template> <div class="pagination…