当前位置:首页 > JavaScript

js实现页码

2026-04-06 14:30:13JavaScript

js实现页码

JavaScript 实现分页功能

基本分页逻辑实现

function paginate(totalItems, currentPage = 1, pageSize = 10) {
    const totalPages = Math.ceil(totalItems / pageSize);

    // 确保当前页在有效范围内
    currentPage = Math.max(1, Math.min(currentPage, totalPages));

    // 计算起始和结束索引
    const startIndex = (currentPage - 1) * pageSize;
    const endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);

    return {
        totalItems,
        currentPage,
        pageSize,
        totalPages,
        startIndex,
        endIndex
    };
}

前端分页显示控制

function renderPagination(totalPages, currentPage) {
    const pagination = document.getElementById('pagination');
    pagination.innerHTML = '';

    // 上一页按钮
    if (currentPage > 1) {
        const prevLink = document.createElement('a');
        prevLink.href = '#';
        prevLink.textContent = '«';
        prevLink.onclick = () => updatePage(currentPage - 1);
        pagination.appendChild(prevLink);
    }

    // 页码按钮
    for (let i = 1; i <= totalPages; i++) {
        const pageLink = document.createElement('a');
        pageLink.href = '#';
        pageLink.textContent = i;
        if (i === currentPage) {
            pageLink.className = 'active';
        }
        pageLink.onclick = () => updatePage(i);
        pagination.appendChild(pageLink);
    }

    // 下一页按钮
    if (currentPage < totalPages) {
        const nextLink = document.createElement('a');
        nextLink.href = '#';
        nextLink.textContent = '»';
        nextLink.onclick = () => updatePage(currentPage + 1);
        pagination.appendChild(nextLink);
    }
}

数据分页处理示例

function getPaginatedData(data, pageInfo) {
    return data.slice(pageInfo.startIndex, pageInfo.endIndex + 1);
}

// 使用示例
const allData = [...]; // 你的数据数组
const pageInfo = paginate(allData.length, 2, 5);
const currentPageData = getPaginatedData(allData, pageInfo);
renderPagination(pageInfo.totalPages, pageInfo.currentPage);

高级分页优化(显示部分页码)

function renderSmartPagination(totalPages, currentPage, maxVisible = 5) {
    const pagination = document.getElementById('pagination');
    pagination.innerHTML = '';

    // 计算显示的页码范围
    let startPage = Math.max(1, currentPage - Math.floor(maxVisible / 2));
    let endPage = Math.min(totalPages, startPage + maxVisible - 1);

    // 调整显示范围
    if (endPage - startPage + 1 < maxVisible) {
        startPage = Math.max(1, endPage - maxVisible + 1);
    }

    // 第一页和省略号
    if (startPage > 1) {
        const firstLink = document.createElement('a');
        firstLink.href = '#';
        firstLink.textContent = '1';
        firstLink.onclick = () => updatePage(1);
        pagination.appendChild(firstLink);

        if (startPage > 2) {
            const ellipsis = document.createElement('span');
            ellipsis.textContent = '...';
            pagination.appendChild(ellipsis);
        }
    }

    // 页码按钮
    for (let i = startPage; i <= endPage; i++) {
        const pageLink = document.createElement('a');
        pageLink.href = '#';
        pageLink.textContent = i;
        if (i === currentPage) {
            pageLink.className = 'active';
        }
        pageLink.onclick = () => updatePage(i);
        pagination.appendChild(pageLink);
    }

    // 最后一页和省略号
    if (endPage < totalPages) {
        if (endPage < totalPages - 1) {
            const ellipsis = document.createElement('span');
            ellipsis.textContent = '...';
            pagination.appendChild(ellipsis);
        }

        const lastLink = document.createElement('a');
        lastLink.href = '#';
        lastLink.textContent = totalPages;
        lastLink.onclick = () => updatePage(totalPages);
        pagination.appendChild(lastLink);
    }
}

样式建议

#pagination {
    display: flex;
    justify-content: center;
    margin: 20px 0;
}

#pagination a {
    color: black;
    padding: 8px 16px;
    text-decoration: none;
    border: 1px solid #ddd;
    margin: 0 4px;
}

#pagination a.active {
    background-color: #4CAF50;
    color: white;
    border: 1px solid #4CAF50;
}

#pagination a:hover:not(.active) {
    background-color: #ddd;
}

这些代码提供了从基本到高级的分页实现方案,可以根据项目需求选择适合的方案或进行组合使用。

js实现页码

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

相关文章

js实现vue

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

js图片轮播的实现

js图片轮播的实现

基础图片轮播实现 使用HTML、CSS和JavaScript实现一个简单的图片轮播效果。HTML部分定义轮播容器和图片,CSS负责样式和过渡效果,JavaScript处理逻辑。 <div cl…