当前位置:首页 > JavaScript

js实现分页代码

2026-03-01 02:09:00JavaScript

实现分页功能的基本思路

分页功能通常需要处理数据分割、页码计算和UI交互。核心逻辑包括计算总页数、当前页数据切片以及页码按钮生成。

基础分页实现代码示例

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

function paginate(data, currentPage = 1, itemsPerPage = 10) {
    const totalPages = Math.ceil(data.length / itemsPerPage);
    const startIdx = (currentPage - 1) * itemsPerPage;
    const endIdx = startIdx + itemsPerPage;
    const pageData = data.slice(startIdx, endIdx);

    return {
        currentPage,
        totalPages,
        pageData,
        hasNext: currentPage < totalPages,
        hasPrev: currentPage > 1
    };
}

// 使用示例
const result = paginate(allData, 2);
console.log(result);

分页UI组件实现

class Pagination {
    constructor(containerId, options) {
        this.container = document.getElementById(containerId);
        this.data = options.data;
        this.itemsPerPage = options.itemsPerPage || 10;
        this.currentPage = 1;
        this.render();
    }

    render() {
        const { pageData, totalPages } = paginate(this.data, this.currentPage, this.itemsPerPage);

        // 渲染数据列表
        const listHtml = pageData.map(item => `<li>${item}</li>`).join('');

        // 渲染页码按钮
        let pageButtons = '';
        for (let i = 1; i <= totalPages; i++) {
            pageButtons += `<button class="${i === this.currentPage ? 'active' : ''}" 
                                data-page="${i}">${i}</button>`;
        }

        this.container.innerHTML = `
            <ul class="data-list">${listHtml}</ul>
            <div class="pagination-controls">
                <button class="prev" ${this.currentPage === 1 ? 'disabled' : ''}>Previous</button>
                ${pageButtons}
                <button class="next" ${this.currentPage === totalPages ? 'disabled' : ''}>Next</button>
            </div>
        `;

        this.addEventListeners();
    }

    addEventListeners() {
        this.container.addEventListener('click', (e) => {
            if (e.target.classList.contains('prev')) {
                this.currentPage--;
                this.render();
            } else if (e.target.classList.contains('next')) {
                this.currentPage++;
                this.render();
            } else if (e.target.hasAttribute('data-page')) {
                this.currentPage = parseInt(e.target.getAttribute('data-page'));
                this.render();
            }
        });
    }
}

// 使用示例
const pagination = new Pagination('pagination-container', {
    data: allData,
    itemsPerPage: 5
});

服务器端分页实现

当数据量很大时,通常需要结合AJAX实现服务器端分页:

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

// 使用示例
fetchPaginatedData(2).then(data => {
    console.log(data.items); // 当前页数据
    console.log(data.totalPages); // 总页数
});

分页样式建议

.pagination-controls {
    display: flex;
    gap: 5px;
    margin-top: 20px;
}

.pagination-controls button {
    padding: 5px 10px;
    border: 1px solid #ddd;
    background: #fff;
    cursor: pointer;
}

.pagination-controls button.active {
    background: #007bff;
    color: white;
    border-color: #007bff;
}

.pagination-controls button:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

高级分页功能扩展

对于更复杂的需求,可以考虑实现以下功能:

  • 动态调整每页显示数量
  • 跳转到指定页码的输入框
  • 显示总记录数和当前显示范围
  • 响应式分页控件(移动端优化)
  • 分页缓存策略
  • 无限滚动分页替代方案

js实现分页代码

标签: 分页代码
分享给朋友:

相关文章

vue实现页面分页

vue实现页面分页

Vue实现页面分页的方法 使用Element UI的分页组件 Element UI提供了现成的分页组件el-pagination,可以快速实现分页功能。需要先安装Element UI库。 <…

网页表格制作css代码

网页表格制作css代码

基础表格样式 使用CSS为HTML表格添加基础样式,如边框、间距和背景色: table { width: 100%; border-collapse: collapse; margin:…

vue本地查询代码实现

vue本地查询代码实现

Vue 本地查询代码实现 在Vue中实现本地查询功能,可以通过以下几种方式实现,具体取决于数据源和查询需求。 使用计算属性进行本地查询 计算属性是Vue中处理响应式数据查询的高效方式,适合基于现有数…

分页实现vue

分页实现vue

分页实现方法(Vue) 使用Element UI分页组件 安装Element UI库后,可以直接使用其分页组件。在模板中添加el-pagination,通过v-model绑定当前页码,设置page-s…

vue router实现分页

vue router实现分页

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

vue实现分页条数

vue实现分页条数

Vue 实现分页条数控制 在 Vue 中实现分页条数控制通常需要结合分页组件和后端 API 支持。以下是几种常见的实现方式: 使用 Element UI 的分页组件 Element UI 提供了强大…