当前位置:首页 > JavaScript

js前端实现分页

2026-04-04 09:01:22JavaScript

前端分页实现方法

客户端分页(适用于数据量较小的情况) 将全部数据加载到前端,通过JavaScript计算分页逻辑。

// 示例数据
const allData = [...]; // 假设这是全部数据
const pageSize = 10; // 每页显示数量
let currentPage = 1; // 当前页码

// 计算分页数据
function getPaginatedData() {
  const startIndex = (currentPage - 1) * pageSize;
  const endIndex = startIndex + pageSize;
  return allData.slice(startIndex, endIndex);
}

// 渲染分页控件
function renderPagination() {
  const totalPages = Math.ceil(allData.length / pageSize);
  let paginationHTML = '';

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

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

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

  document.getElementById('pagination').innerHTML = paginationHTML;
}

// 切换页码
function changePage(page) {
  currentPage = page;
  renderData();
  renderPagination();
}

// 渲染数据
function renderData() {
  const paginatedData = getPaginatedData();
  // 渲染数据到页面...
}

服务器端分页(适用于大数据量) 通过AJAX或Fetch API请求分页数据。

js前端实现分页

async function fetchPaginatedData(page, pageSize) {
  try {
    const response = await fetch(`/api/data?page=${page}&size=${pageSize}`);
    const result = await response.json();
    return {
      data: result.data,
      total: result.total
    };
  } catch (error) {
    console.error('Error fetching data:', error);
    return { data: [], total: 0 };
  }
}

// 使用示例
let currentPage = 1;
const pageSize = 10;

async function loadPage(page) {
  currentPage = page;
  const { data, total } = await fetchPaginatedData(currentPage, pageSize);
  renderData(data);
  renderPagination(total);
}

使用现成库实现 可以借助现有库如jQuery插件或现代框架的分页组件。

js前端实现分页

// 使用DataTables插件示例
$(document).ready(function() {
  $('#example').DataTable({
    "paging": true,
    "pageLength": 10,
    "serverSide": true,
    "ajax": {
      "url": "/api/data",
      "type": "POST"
    }
  });
});

// Vue.js中使用Element UI分页组件
<template>
  <el-pagination
    @current-change="handleCurrentChange"
    :current-page="currentPage"
    :page-size="pageSize"
    :total="total">
  </el-pagination>
</template>

<script>
export default {
  data() {
    return {
      currentPage: 1,
      pageSize: 10,
      total: 100
    }
  },
  methods: {
    handleCurrentChange(val) {
      this.currentPage = val;
      this.fetchData();
    }
  }
}
</script>

优化建议

  • 添加加载状态指示器
  • 实现页面跳转输入框
  • 考虑URL同步当前页码
  • 实现每页显示数量可配置
  • 添加数据为空时的友好提示

注意事项

  • 客户端分页不适合大数据量(超过1000条)
  • 服务器端分页需要后端配合实现
  • 移动端需要考虑触摸操作体验
  • 分页控件应当清晰显示当前状态
  • 考虑添加首页和末页快捷按钮

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

相关文章

vue router实现分页

vue router实现分页

Vue Router 实现分页的方法 在 Vue.js 中,可以通过 Vue Router 实现分页功能,通常需要结合路由参数和动态路由匹配。以下是几种常见的实现方式: 使用查询参数实现分页 在路由…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

vue 分页 实现

vue 分页 实现

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

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现预览

js实现预览

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

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…