当前位置:首页 > JavaScript

js分页实现前端实现

2026-02-01 22:30:53JavaScript

分页前端实现方法

基于数组的分页

通过数组的slice方法实现数据分页,适用于数据量较小的情况:

const data = [/* 数据数组 */];
const pageSize = 10; // 每页显示数量
const currentPage = 1; // 当前页码

const paginatedData = data.slice(
  (currentPage - 1) * pageSize,
  currentPage * pageSize
);

动态渲染分页器

创建可交互的分页控件,通常包含页码按钮和导航功能:

function renderPagination(totalPages, currentPage) {
  let paginationHTML = '<div class="pagination">';

  // 上一页按钮
  paginationHTML += `<button ${currentPage === 1 ? 'disabled' : ''} 
    onclick="changePage(${currentPage - 1})">上一页</button>`;

  // 页码按钮
  for (let i = 1; i <= totalPages; i++) {
    paginationHTML += `<button ${i === currentPage ? 'class="active"' : ''} 
      onclick="changePage(${i})">${i}</button>`;
  }

  // 下一页按钮
  paginationHTML += `<button ${currentPage === totalPages ? 'disabled' : ''} 
    onclick="changePage(${currentPage + 1})">下一页</button>`;

  paginationHTML += '</div>';
  document.getElementById('pagination').innerHTML = paginationHTML;
}

无限滚动分页

js分页实现前端实现

适用于移动端或需要流畅浏览体验的场景,通过监听滚动事件动态加载数据:

window.addEventListener('scroll', () => {
  if (window.innerHeight + window.scrollY >= document.body.offsetHeight - 500) {
    if (!isLoading) {
      loadMoreData();
    }
  }
});

function loadMoreData() {
  isLoading = true;
  // 获取下一页数据的逻辑
}

与API配合的分页

当前端需要从后端获取分页数据时,通常需要传递页码和每页大小参数:

js分页实现前端实现

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

分页组件封装

可复用的分页组件实现示例(Vue版本):

Vue.component('pagination', {
  props: ['total', 'current', 'pageSize'],
  template: `
    <div class="pagination">
      <button @click="prev" :disabled="current === 1">上一页</button>
      <span v-for="page in pages" :key="page">
        <button @click="goTo(page)" :class="{active: page === current}">
          {{ page }}
        </button>
      </span>
      <button @click="next" :disabled="current === pageCount">下一页</button>
    </div>
  `,
  computed: {
    pageCount() {
      return Math.ceil(this.total / this.pageSize);
    },
    pages() {
      // 生成可见页码数组的逻辑
    }
  },
  methods: {
    goTo(page) {
      this.$emit('page-changed', page);
    },
    prev() {
      this.goTo(this.current - 1);
    },
    next() {
      this.goTo(this.current + 1);
    }
  }
});

性能优化技巧

大数据量分页时可采用虚拟滚动技术,只渲染可视区域内的数据:

function virtualScroll(items, containerHeight, itemHeight) {
  const scrollTop = container.scrollTop;
  const startIndex = Math.floor(scrollTop / itemHeight);
  const endIndex = Math.min(
    startIndex + Math.ceil(containerHeight / itemHeight),
    items.length
  );

  return items.slice(startIndex, endIndex).map((item, index) => ({
    ...item,
    style: { transform: `translateY(${(startIndex + index) * itemHeight}px)` }
  }));
}

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

相关文章

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

vue 分页 实现

vue 分页 实现

Vue 分页实现方法 使用 Element UI 分页组件 Element UI 提供了现成的分页组件 el-pagination,适合快速集成。需要先安装 Element UI 库。 安装 Ele…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:…

js实现分页功能代码

js实现分页功能代码

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

uniapp 分页组件

uniapp 分页组件

uniapp 分页组件实现方法 在uniapp中实现分页功能,可以通过自定义组件或使用第三方组件库完成。以下是几种常见实现方式: 自定义分页组件 创建一个名为uni-pagination的组件,模板…

react如何实现分页

react如何实现分页

实现分页的基本思路 在React中实现分页通常需要以下几个核心步骤:管理当前页码状态、计算分页数据、渲染分页控件。以下是一个典型的分页实现方法。 管理分页状态 使用React的useState钩子来…