JS分页案例

【JS案例】分页器——使用原生JavaScript实现 原生js实现分页器功能 阅读详情

JS分页案例

项目中经常会用到分页,自己写了一个但是实在太难看,整理了半天后放弃了。于是在网上找了一个挺不错的,稍微修改后记录在此,以后方便使用。
效果如下:
分页效果

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title>分页演示</title>
    </head>

    <body>

        <!--分页按钮显示的位置-->
        <div id="pagerId"></div>

    </body>

    <script type="text/javascript">
        /**
         *  设置页面的按钮 
         * @param {Object} divPager     分页div的id
         * @param {Object} pageIndex    当前页码数
         * @param {Object} pageSize     每页显示的记录数
         * @param {Object} totalCount   总计多少条记录
         * @param {Object} pageChange   分页页按钮的点击事件()
         * @param {Object} opt          页面的显示效果配置
         */
        var pager = function(divPager, pageIndex, pageSize, totalCount, pageChange, opt) {
            var theOpt = {
                barSize: 5, //分页条显示的页码数   
                barTemplate: "{bar}  共{totalPage}页{totalCount}条 {goto}", //显示模板
                autoHide: true, //是否自动隐藏
                showFirst: true, //在totalPage>barSize时是自动否显示第一页链接
                showLast: true, //在totalPage>barSize时是自动否显示最后一页链接
                showGoTo: true, //是否显示GoTo
                autoHideGoTo: true //如果太少是否自动隐藏GoTo
            };
            if (opt) {
                if (opt.barSize)
                    theOpt.barSize = opt.barSize;
                if (opt.barTemplate)
                    theOpt.barTemplate = opt.barTemplate;
                if (opt.autoHide == false)
                    theOpt.autoHide = false;
                if (opt.showFirst == false)
                    theOpt.showFirst = false;
                if (opt.showLast = false)
                    theOpt.showLast = false;
                if (opt.showGoTo == false)
                    theOpt.showGoTo = false;
                if (opt.autoHideGoTo == false)
                    theOpt.autoHideGoTo = false;
            }
            var handles = window.myPagerChanges = (function(x) {
                return x;
            }(window.myPagerChanges || {}));
            if (!myPagerChanges[divPager]) {
                myPagerChanges[divPager] = pageChange;
            }
            var startPage = 0; //分页条起始页
            var endPage = 0; //分页条终止页
            var showFirst = true;
            var showLast = true;
            if (isNaN(pageIndex)) {
                pageIndex = 1;
            }
            pageIndex = parseInt(pageIndex);
            if (pageIndex <= 0)
                pageIndex = 1;
            if (pageIndex * pageSize > totalCount) {
                pageIndex = Math.ceil(totalCount / pageSize);
            }
            if (totalCount == 0) { //如果没数据
                document.getElementById(divPager).innerHTML = "";
                return "";
            }
            var totalPage = Math.ceil(totalCount / pageSize);
            if (theOpt.autoHide && totalCount <= pageSize) { //自动隐藏
                document.getElementById(divPager).innerHTML = "";
                return "";
            }
            if (totalPage <= theOpt.barSize) {
                startPage = 1;
                endPage = this.totalPage;
                theOpt.showLast = theOpt.showFirst = false;
            } else {
                if (pageIndex <= Math.ceil(theOpt.barSize / 2)) { //最前几页时
                    startPage = 1;
                    endPage = theOpt.barSize;
                    theOpt.showFirst = false;
                } else if (pageIndex > (totalPage - theOpt.barSize / 2)) { //最后几页时
                    startPage = totalPage - theOpt.barSize + 1;
                    endPage = totalPage;
                    theOpt.showLast = false;
                } else { //中间的页时
                    startPage = pageIndex - Math.ceil(theOpt.barSize / 2) + 1;
                    endPage = pageIndex + Math.floor(theOpt.barSize / 2);
                }
                if (totalPage <= (theOpt.barSize * 1.5)) {
                    theOpt.showLast = theOpt.showFirst = false;
                }
            }

            function _getLink(index, txt) {
                if (!txt) txt = index;
                //可点击的分页按钮
                return "<a href='javascript:;' style='margin: 2px 5px;border: 1px solid #6d8cad;color: #0269BA;padding: 2px 5px;text-decoration: none;' onclick='myPagerChanges[\"" + divPager + "\"](" + index + ")'>" + txt + "</a>";
            }
            var barHtml = ""; //分页条
            barHtml += pageIndex == 1 ? "" : _getLink(pageIndex - 1, "上一页");
            if (theOpt.showFirst) {
                barHtml += _getLink(1) + "<span>...</span>";
            }
            for (var index = startPage; index <= endPage; index++) {
                if (index == pageIndex) {
                    //不可点击的分页按钮(当前页)
                    barHtml += "<span style='color:red;font-weight:blod; '>" + index + "</span>";
                } else {
                    barHtml += _getLink(index);
                }
            }
            if (theOpt.showLast) {
                barHtml += "<span>...</span>" + _getLink(totalPage);
            }
            barHtml += pageIndex == totalPage ? "" : _getLink(pageIndex + 1, "下一页");
            var gotoHtml = ""; //goto框及按钮
            if (theOpt.showGoTo && theOpt.barTemplate.indexOf("{goto}") > 0) {
                if ((theOpt.autoHideGoTo && totalPage > 15) || theOpt.autoHideGoTo == false) {
                    var txtid = divPager + "_goIndex";
                    var indexVal = "document.getElementById(\"" + txtid + "\").value";
                    //输入框样式
                    gotoHtml += "<input type='text' onkeypress='if(event.keyCode==13){myPagerChanges[\"" + divPager + "\"](" + indexVal + ")}' id='" + txtid + "' value=" + pageIndex + " style='width:30px'> ";
                    //跳转按钮样式
                    gotoHtml += "<input type='button' class='page_bg' value='go' onclick='myPagerChanges[\"" + divPager + "\"](" + indexVal + ")'>";
                }
            }
            //替换模板
            var pagerHtml = theOpt.barTemplate.replace("{bar}", barHtml)
                .replace("{totalCount}", totalCount)
                .replace("{pageIndex}", pageIndex)
                .replace("{totalPage}", totalPage)
                .replace("{goto}", gotoHtml);
            document.getElementById(divPager).innerHTML = pagerHtml;
            return pagerHtml;
        };
        /**
         * 页面发生跳转时的事件
         * @param {Object} index    页码
         */
        var pageChange = function(index) {
            if (index < 0) {} else {
                alert("跳转到" + index + "页,请求数据");
            }
            var html = pager("pagerId", index, 5, 1000, pageChange, {
                showGoTo: true,
                showFirst: false
            });
        };
        //显示分页按钮
        pageChange(-1);
    </script>

</html>
JavaScript分页技术:10个实用代码案例解析 在Web开发中,良好的用户体验往往离不开精美的界面设计和流畅的交互体验。分页控件作为用户浏览大量数据时的界面组件,其样式和交互的自定义显得尤为重要。 阅读详情

相关推荐

基于js分页实现(简单)

使用javacript实现分页技术,简单明了。没有多以的步骤!

JavaScript经典实例之分页(简单易用)原生js封装分页(一次性数据)

<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <style> *{ margin:5px; padding:0; } .table { word-break: br...

编程界明世隐的博客 2622

使用js实现简单分页

使用js写的分页模块,html页面引入相应的js和css可以直接调用里面的方法,使用方便,里面有一个小demo

【js 分页】js 分页 方法一 【实用】

纯js 分页功能。

刘贵庆的博客 8284

js分页demo

js分页的demo封装,详细讲述了js做页码切换,带有首页、尾页和输入框输入后的页码计算和跳转

javascript分页代码实例分享(js分页)

主要介绍了javascript分页实例,大家参考使用吧

JS实现分页功能

JS实现分页功能

大数据同盟会的博客 1万+

纯javascript实现分页(两种方法)

先给大家贴效果图:      网上确实有很多分页的插件以及开源代码,单本是一个后台开发猿,前台css等样式还驾驭不住,所以就开始自己去写了。其实这个分页原理很简单,就是用ajax往后台传值(当前页码),后台使用limit进行分页。      因为这是我自己第一次动手用js写分页,写的应该也不是很完美,有些公共的没有抽取出来,但是用起来还是可以的,这块代码是可以把它当做公共的分页去处理的,我就是用 这块代码写了两个稍微不同一些的分页!公共的代码抽取的也差不多,主要就是ajax后台以及返回的值不同而已,只要把总页码的值获取到,点击首页/下一页等传值正确的话,基本上分页是不会出什么问题的 纯j

JavaScript小案例------js实现分页插件效果篇

原生js实现分页插件效果

前端叶荨,随手记 4172

卷积码和Turbo码

通信原理相关博文目录:目录我们常在移动通信中遇到的卷积码就是一种非分组码,卷积码和信号处理中的卷积运算有关系吗?是不是就是信号处理中的卷积运算,先看看编码器的编码原理再说:下面是一个比较实用的卷积码编码器:它有三个移位寄存器D0,D1,D2和三个模2加法器,以及一个旋转开关组成,编码前,先将各级移位寄存器清零:现在假设输入的信息码元是1101:当输入的第一个码元为1时,三个模2加法器计算的结果都为...

Reborn Lee 2万+

ESP32-CAM搭建Arduino及简单使用

配置环境 方法一 文件 → 首选项 http://wechat.doit.am/package_esp8266com_index.json https://dl.espressif.com/dl/package_esp32_index.json 工具 → 开发板 → 开发板管理器 等待安装 方法二 https://github.com/espressif/arduino-esp32 Arduino安装目录下,找到hardware文件夹 建立文件夹espressif,然后在里面再建立一个esp32文件夹

Ying的博客 2万+

JS小案例_普通分页

知识点 瀑布流无限加载页面分页案例 在上面的案例基础上增加了前端分页插件 jquery.simplePagination.js simplePagination.css //插件展示所需元素() <div class="pagination-holder clearfix"> <div id="light-pagination" class="pagination"></div> </div>

sunnyday的博客 333

18、社区多能源管理与点对点能源交易优化调度策略研究

本文研究了社区多能源管理与点对点(P2P)能源交易的优化调度策略,构建了适用于单一社区多个产消者的P2P交易模型,以用户生产成本最小化为目标,设计了基于ADMM算法的迭代优化方法。通过电热联合调度与能源共享机制,结合光伏、热电联产(CHP)和储能系统(ESS),实现了用户侧能源的高效利用。仿真结果表明,引入P2P交易和CHP设备显著降低了用户能源成本,提高了电力自给率和天然气利用率,减少了对主电网的依赖。研究验证了ADMM算法在分布式优化中的有效性,为未来社区能源系统的智能化管理提供了理论支持和技术路径。

git9versioner的博客 70

2021-01-09 JavaScript前端分页案例

嘿嘿嘿,鸽鸽鸽了好几天了,之前想着要挑战每天写一篇博文分享的,结果虽然一天不落,但也从一开始的分享变成应付了事的,发了好多都是面试题纯概念什么的 所以,以后只会多多给大家分享有价值的文章,不再水文章了。。。 正文开始 今天依然是一个小案例,前端分页 ...

Amanda&Rachel的博客 273

Spatial-ORMLLM: Improve Spatial Relation Understanding in the Operating Room with Multimodal Larg...

手术室(OR)中的精准空间建模是众多临床任务的基础,可为术中感知、风险规避及手术决策提供支持。现有方法虽利用大规模多模态数据集进行 latent 空间对齐,以隐式学习空间关系,但却忽视了多模态大型语言模型(MLLM)的3D能力。然而,这种方法存在两个问题:1)手术室通常缺乏多台视频和音频传感器,多模态3D数据难以获取;2)仅依赖易获取的2D数据训练,无法捕捉复杂场景中的细粒度细节。为解决这一问题,我们提出——首个针对手术室3D空间推理的大型视觉语言模型。

UnknownBody_2的博客 592

dify进阶:使用 FastAPI 的 StreamingResponse 实现高效的数据流传输

在 FastAPI 框架中,是一个非常有用的工具,它允许你以流的方式发送数据给客户端,而不是一次性加载所有内容到内存中再发送。这对于处理大型文件下载、视频流或者任何需要长时间处理的任务特别有用。

xiezhipu的博客 1433

【JavaScript】JS实用案例分享:动态生成分页组件 通过按键实现移动控制_动态分页按钮

最近博主一直在牛客网刷题巩固基础知识,牛客网不仅具有公司真题专项练习面试题库在线编程等功能,还具有非常强大的AI模拟面试功能,简直是求职者的福音!牛客网里的题库非常全面的,无论你是前端还是后端,是想要备考还是准备面试又或者是想要提高自己点我进入牛客网牛客网牛客网在这里插入图片描述在这里插入图片描述本篇文章所有示例来自于牛客网题库/在线编程/JS篇,这些都是前端开发中常用的功能,借此记录一下刷题过程,巩固基础!

2401_84164672的博客 646

2025年全国青少年信息素养大赛复赛真题(算法创意实践挑战赛C++初中组试卷1:带解析)(7月6日试卷)

2025年全国青少年信息素养大赛复赛真题(算法创意实践挑战赛C++初中组试卷1:带解析)(7月6日试卷)

王老师青少年编程 1957

JS案例 - 分页

1.html文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> ...

weixin_44143173的博客 102

VSCode + QMT 量化交易完整解决方案!

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1327

【人工智能】RAG如何根据实际需求选择和进行文档解析(如 PDF、Word、TXT、网页等)?

文档解析的核心在于根据解析目标、文档类型和处理量选择合适工具。PDF、Word、TXT和网页各有特性:PDF需区分可编辑与扫描版,Word需处理结构化内容,TXT简单但需注意编码,网页需应对动态内容。解析场景包括提取纯文本、结构化数据、保留格式和批量处理。非技术用户可借助工具如Adobe Acrobat、WPS和在线OCR,技术用户可通过编程实现自动化。通用流程为:明确目标、分析文档属性、选择工具并测试优化。核心是“工具适配需求”,无需追求万能方案。

奶爸的编程之路,也就一周冷个三天 506

JS 实现table分页显示 —— 实际案例

实际页面效果 http://ikaros-521.gitee.io/js_table_paging 代码下载: 码云 文章参考 https://blog.youkuaiyun.com/baidu_41647119/article/details/83479867 效果展示 第一页 15条记录,右下角显示 第二页 11条记录,右下角显示 具体代码 相关样式我用了 bootstrap,jQuery。jQuer...

Love丶伊卡洛斯 4665

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

js分页的一个个案例,直接复制就可以运行 js分页

第一个: <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + req

hepeng_8的专栏 2222

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

纯JavaScript的分页案例

首先介绍下访问者模式,简单的说就是我们有一系列数据,不同访问者对其有不同的操作,但是不可改变其数据。 应用于分页情况是我们通过记录总数,每页记录行数,当期页码等等数据来显示html效果,数据都是一样的,但是显示效果却需求不同。 我们先来计算数据: var SplitPage=function(allcount,onePagecount,currPage,styleShowNum)

花烛 1010

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JS案例之1——pager 分页

原文:JS案例之1——pager 分页学习JS大半年之久,第一次自己尝试写一些小插件,写法参考网上某位牛人写代码的思路。 此处代码写的是静态分页。如果需动态分页,还可以修改下。第一次写,还有很多地方可以优化。希望各位大牛踊跃拍砖。 预览图     源代码 1 &lt;!DOCTYPE html&gt; 2 &lt;html&gt; 3 &lt;head&gt; ...

weixin_33805743的博客 104

php中用js分页案例

<div id="adminmaincontent"> <div class="pagenav w100"> <div class="float"> <div class="e5"></div><div class="pre" name="pre" style=" float...

diankuanhuan8843的博客 127
上一篇: Struts2的拦截器
下一篇: 设计模式(一)
sunbufu
博客等级 码龄11年 17粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值