当前位置: 首页 > news >正文

html+js列表分页功能封装

封装代码 

 /*** 设置分页* @param totalPage 总页数* @param currentPage 当前页码*/function refreshPages(totalPage = 1, currentPage = 1) {//用id选择器写入页码部分代码if (totalPage > 0) {let paginationInfo = getPagination(totalPage, currentPage);$("#pagination").html(paginationInfo);} else {// 总页数为0时,不展示分页$("#pagination").html("");}}// 渲染分页function getPagination(totalPage, currentPage) {let paginationInfo = "<ul class='pagination pagination-sm'>";// 上一页if (currentPage === 1) {paginationInfo += `<li class='disabled'><a href='javascript:void(0);'>«</a></li>`;} else {paginationInfo += `<li><a href='javascript:void(0);' onclick='refreshPages(${totalPage}, ${currentPage - 1}); searchJob(${currentPage - 1})'>«</a></li>`;}// 中间页码逻辑if (totalPage <= 10) {// 总页数 <= 10:显示全部页码for (let i = 1; i <= totalPage; i++) {paginationInfo += generatePageItem(i, currentPage, totalPage);}} else {// 总页数 > 10:分情况显示if (currentPage <= 3) {// 当前页在前3页for (let i = 1; i <= 4; i++) {paginationInfo += generatePageItem(i, currentPage, totalPage);}paginationInfo += generateEllipsis();paginationInfo += generatePageItem(totalPage, currentPage, totalPage);} else if (currentPage >= totalPage - 2) {// 当前页在最后3页paginationInfo += generatePageItem(1, currentPage, totalPage);paginationInfo += generateEllipsis();for (let i = totalPage - 3; i <= totalPage; i++) {paginationInfo += generatePageItem(i, currentPage, totalPage);}} else {// 当前页在中间paginationInfo += generatePageItem(1, currentPage, totalPage);paginationInfo += generateEllipsis();for (let i = currentPage - 1; i <= currentPage + 1; i++) {paginationInfo += generatePageItem(i, currentPage, totalPage);}paginationInfo += generateEllipsis();paginationInfo += generatePageItem(totalPage, currentPage, totalPage);}}// 下一页if (currentPage === totalPage) {paginationInfo += `<li class='disabled'><a href='javascript:void(0);'>»</a></li>`;} else {paginationInfo += `<li><a href='javascript:void(0);' onclick='refreshPages(${totalPage}, ${currentPage + 1}); searchJob(${currentPage + 1})'>»</a></li>`;}paginationInfo += "</ul>";return paginationInfo;}// 生成一个页码项function generatePageItem(pageNumber, currentPage, totalPage) {const isActive = pageNumber === currentPage;return `<li class="${isActive ? "active" : ""}"><a href='javascript:void(0);' onclick='refreshPages(${totalPage}, ${pageNumber}); searchJob(${pageNumber})'>${pageNumber}</a></li>`;}// 生成省略号function generateEllipsis() {return "<li><a href='javascript:void(0);'>...</a></li>";}

样式

// 分页
.pagination {margin-top: 1.25rem;display: flex;justify-content: center;// 禁止复制-webkit-user-select: none; /* Safari */-moz-user-select: none; /* Firefox */-ms-user-select: none; /* Internet Explorer/Edge */user-select: none; /* 标准语法 */> li {> a,> span {margin: 0 0.1875rem;color: #6c757d;border-color: #dee2e6;height: 2.5rem;width: 2.5rem;display: flex;align-items: center;justify-content: center;text-align: center;border-radius: 0.125rem;background: rgba(244, 244, 245, 1);&:hover,&:focus {background-color: rgba(196, 48, 44, 1);border-color: rgba(196, 48, 44, 1);color: #fff;}}&.pagination-sm {> a,> span {padding: 0;min-width: 1.625rem;line-height: 1.5rem;}}&.pagination-lg {> a,> span {padding: 0;min-width: 2.3125rem;line-height: 2.1875rem;}}&:first-child {a,span {-webkit-border-radius: 0.125rem;border-radius: 0.125rem;}}&:last-child {a,span {border-top-right-radius: 0.125rem;border-bottom-right-radius: 0.125rem;}}}.active {> a,> a:focus,> a:hover,> span,> span:focus,> span:hover {background-color: rgba(196, 48, 44, 1);border-color: rgba(196, 48, 44, 1);color: #fff;}}.disabled {> a,> a:focus,> a:hover,> span,> span:focus,> span:hover {background-color: #f4f4f5;color: #6c757d;cursor: not-allowed;}}.no-border {> li {a,span {border: none;}}}.pagination-circle {> li {a,span {-webkit-border-radius: 50% !important;border-radius: 50% !important;}}}.no-gutters {> li {a,span {margin: 0;margin-left: -0.0625rem;-webkit-border-radius: 0 !important;border-radius: 0 !important;}}}
}

js调用

// 生成分页组件
refreshPages(1, 1);//总页数,当前页数
// 请求分页数据
const searchJob = (page) => {// console.log(page);//page是点击分页的页数appSearch(page);// 这个是请求数据列表的方法
};

在需要展示分页的html的地方添加

 <!-- 分页 -->
<div id="pagination"></div>
http://www.dtcms.com/a/298751.html

相关文章:

  • Kubernetes服务发布进阶
  • GPT - 5被曝将在8月初发布!并同步推出mini、nano版
  • 如何评估一个RWA项目的可信度?关键指标解析
  • dart使用
  • 在DolphinScheduler执行Python问题小记
  • 关于linux运维 出现高频的模块认知
  • 基于多种主题分析、关键词提取算法的设计与实现【TF-IDF算法、LDA、NMF分解、BERT主题模型】
  • Nginx 限流
  • Model Control Protocol 三层架构设计,三种传输方式,完成MCP项目构建实现工具调试,多维度评价指标检测多工具多资源调用的鲁棒性和稳健性
  • MyBatisPlus(一)简介与基本CRUD
  • Logcat日志分析
  • SpringBoot 获取请求参数的常用注解
  • 自由学习记录(73)
  • 地铁逃生
  • 注意力机制的使用说明01
  • RNN模型数学推导过程(笔记)
  • 散列表(哈希表)
  • SQL基础⑮ | 触发器
  • 亚德诺半导体AD8539ARZ-REEL7 超低功耗轨到轨运算放大器,自动归零技术,专为可穿戴设备设计!
  • Python 程序设计讲义(20):选择结构程序设计——双分支结构的简化表示(三元运算符)
  • 【linux】Haproxy七层代理
  • 电子基石:硬件工程师的器件手册 (八) - 栅极驱动IC:功率器件的神经中枢
  • 【自动化运维神器Ansible】Ansible常用模块之Copy模块详解
  • 程序代码篇---卡尔曼滤波与PID的组合应用
  • 2.Linux 网络配置
  • 【PyTorch】图像多分类项目部署
  • python基础:request模块简介与安装、基本使用,如何发送get请求响应数据,response属性与请求头
  • centOS7 yum安装新版本的cmake,cmake3以上怎么安装,一篇文章说明白
  • Java并发编程第十篇(ThreadPoolExecutor线程池组件分析)
  • 无印 v1.6 视频解析去水印工具,支持多个平台