前端js分页功能的实现,非常实用,新手必看

分享一个前端拿到数据后,自己生成分页的案例,案例如图显示,点击搜索后查询数据,显示数据列表,前端根据数据显示正确的分页

附上代码:代码附上,简单粗暴,自己用过的,兼容性好,没有封装,可以很好的分页原理,希望可以帮助到大家

html排版如下:

<!--搜索列表--><div class="search">    <div class="container">        <div class="searchList">            <table id="searchList">                <!--<tr>                    <td>                        <a href="">                        <p class="title">正标题</p>                        <p class="className"><span>所属分类</span><em class="date">2019-01-01</em></p>                        <p class="detail">搜索详细信息展示,要考虑没有的情况下,不显示只显示标题</p>                        </a>                    </td>                </tr>-->            </table>            <div class="pageRow">                <div id="pageination"></div>            </div>        </div>    </div></div>

js代码如下:每一步操作都有注释

//鼠标点击的时候搜索    function searchAction() {        var serchId=$(‘#serchId‘).val();        $.ajax({            type:"post",            url:"Web/search",            data:{"search":serchId},            success:function (data) {                if(data.total!=0){                    $(‘#searchList‘).empty();                    $.each(data.list,function (i,obj) {                        var lielem=‘<tr>\n‘ +                            ‘                    <td>\n‘ +                            ‘                        <a href="‘+obj.url+‘">\n‘ +                            ‘                        <p class="title">‘+obj.title+‘</p>\n‘ +                            ‘                        <p class="className" id="className‘+i+‘"></p>\n‘ +                            ‘                        <p class="detail" id="detail‘+i+‘"></p>\n‘ +                            ‘                        </a>\n‘ +                            ‘                    </td>\n‘ +                            ‘                </tr>‘;                        $(‘#searchList‘).append(lielem);                        if(obj.className!= null){                            var spanElem=‘<span>‘+obj.className+‘</span>‘;                            $(‘#className‘+i).append(spanElem);                        }                        if(obj.creatTime!=null){                            var emElem=‘<em>‘+obj.creatTime+‘</em>‘;                            $(‘#className‘+i).append(emElem);                        }                        if(obj.detail != undefined || obj.detail != null){                            var detailElem=‘<p>‘+obj.detail+‘</p>‘;                            $(‘#detail‘+i).append(detailElem);                        }

                    })                    //位置1  对数据进行分页                    $(‘#pageination‘).show();                    pagination(3,1);                }else{                    $(‘#searchList‘).empty();                    var strNull=‘<p style="text-align: center;line-height: 50px">暂无相关搜索结果</p>‘ +                        ‘<p style="text-align: center"><a href="index.html"><button id="btnback" type="button">返回首页</button></a></p>‘;                    $(‘#searchList‘).append(strNull);                    $(‘#pageination‘).hide();

                }

            }

        });    }

   $(‘#serchId‘).on(‘keydown‘,function (event) {        var e = event || window.event || arguments.callee.caller.arguments[0];        if (e && e.keyCode==13) {            searchAction();        }    })

    //列表分页    //perPage 每一页显示条数     current:当前第几页    function pagination(perPage,current) {        var tableData = document.getElementById("searchList");        var totalCount=tableData.rows.length;  //总条数

        //设置表格总页数        var totalPage=0;//列表的总页数        var pageSize = perPage;        if (totalCount/pageSize > parseInt(totalCount/pageSize)){            totalPage = parseInt(totalCount/pageSize)+1;        }else{            totalPage = parseInt(totalCount/pageSize);        }        //对数据进行分页        var currentPage=current;        var startRow=(currentPage-1)*pageSize+1;        var endRow=(currentPage*pageSize > totalCount ? totalCount : currentPage*pageSize);

        for(var i=1;i<(totalCount+1);i++){            var irow = tableData.rows[i-1];            if(i>=startRow && i<=endRow){                irow.style.display = "block";            }else{                irow.style.display = "none";            }        }        //位置2 生成当前的点击按钮        createBtns(totalPage , current);        //位置3  绑定点击事件        bindClick(totalPage);

    }    //生成点击按钮    //totalPages 分页的总页数    //current当前页    function createBtns(totalPages , current) {        var tempStr = "";        /*上一页按钮*/        if (current > 1) {           /* tempStr += "<span class=‘btn first‘ href=\"#\"  data-page = ‘1‘>首页</span>";*/            tempStr += "<span class=‘btn prev‘ href=\"#\" data-page = "+(current-1)+">上一页</span>"        }        /*中间页码的显示*/        /*如果总页数超出5个处理办法*/        if(totalPages<=5){            for(var pageIndex= 1 ; pageIndex < totalPages+1; pageIndex++){                tempStr += "<a  class=‘btn page"+pageIndex+"‘  data-page = "+( pageIndex )+"><span>"+ pageIndex +"</span></a>";            }        }else{            if(current<5){                for(var pageIndex= 1 ; pageIndex < 5; pageIndex++){                    tempStr += "<a  class=‘btn page"+pageIndex+"‘  data-page = "+( pageIndex )+"><span>"+ pageIndex +"</span></a>";                }                tempStr+=‘<span>......</span>‘;                tempStr += "<a  class=‘btn page"+totalPages+"‘  data-page = "+( totalPages )+"><span>"+ totalPages +"</span></a>";            }else if(current>= totalPages-4){                tempStr += "<a  class=‘btn page"+1+"‘  data-page = "+( 1 )+"><span>"+ 1 +"</span></a>";                tempStr+=‘<span>......</span>‘;                for(var pageIndex= totalPages-4 ; pageIndex <= totalPages; pageIndex++){                    tempStr += "<a  class=‘btn page"+pageIndex+"‘  data-page = "+( pageIndex )+"><span>"+ pageIndex +"</span></a>";                }            }else if(current>=5 && current <totalPages-4){                tempStr += "<a  class=‘btn page"+1+"‘  data-page = "+( 1 )+"><span>"+ 1 +"</span></a>";                tempStr+=‘<span>......</span>‘;                for(var pageIndex= current ; pageIndex <= current+4; pageIndex++){                    tempStr += "<a  class=‘btn page"+pageIndex+"‘  data-page = "+( pageIndex )+"><span>"+ pageIndex +"</span></a>";                }                tempStr+=‘<span>......</span>‘;                tempStr += "<a  class=‘btn page"+totalPages+"‘  data-page = "+( totalPages )+"><span>"+ totalPages +"</span></a>";            }        }        /*下一页按钮*/        if (current < totalPages) {            tempStr += "<span class=‘btn next‘ href=\"#\"  data-page = "+(current+1)+">下一页</span>";/*            tempStr += "<span class=‘btn last‘ href=\"#\" data-page = "+ (totalPages) +">尾页</span>";*/        }        document.getElementById("pageination").innerHTML = tempStr;    }    function bindClick(totalPage) {        // 设置首页、末页、上一页、下一页的点击事件        var buttonArr = [‘first‘,‘last‘,‘prev‘,‘next‘];        for(var k in buttonArr){            var $dom = ‘.‘+buttonArr[k];            $(‘body‘).delegate( $dom , ‘click‘ , function () {                var data = $(this).data(‘page‘);//获取当前按钮跳转的页数                pagination(‘3‘ , data);//对页面进行分页                //对当前页码的样式做处理                $(‘.page‘+data).css({background:‘#0449d4‘,color:‘#fff‘}).siblings().css({background:‘#fff‘,color:‘#999‘});            })        }

        // 设置数码的点击事件 totalImgPage是总页数,为全局变量,在分页时被赋值        for (var k  = 1 ;k <= totalPage ; k++){            var $singleDom  = ‘.page‘+k;            $(‘body‘).delegate( $singleDom , ‘click‘ , function () {                var data = $(this).data(‘page‘);                pagination(‘3‘ , data);//对页面进行分页                //对当前页码的样式做处理                $(‘.page‘+data).css({background:‘#0449d4‘,color:‘#fff‘}).siblings().css({background:‘#fff‘,color:‘#999‘});            })        }    }

基于jq复制完整代码此分页功还是能实现的,也展示的分页的原理,若有大神改进,望瞻仰!

原文地址:https://www.cnblogs.com/PotatosMe/p/11075715.html

时间: 2024-10-08 17:39:43

前端js分页功能的实现,非常实用,新手必看的相关文章

jsp、js分页功能的简单总结

一.概述 首先,我们要明确为何需要分页技术,主要原因有以下: 1.分页可以提高客户体验度,适当地选择合适的数据条数,让页面显得更有条理,使得用户体验感良好,避免过多数据的冗余. 2.提高性能的需要.分页技术,有选择的加载某部分数据,在数据量较大的时候,分部分加载数据.显示数据,可以有效提高程序的性能,当然,单纯的js的分页技术并没有这种效果. 所以,分页技术是web技术中比较常用的技术,而下面讨论的主要是两种分页技术:一种是jsp的分页技术,其读取数据分批次读取,操作页数跳转的时候才加载相应页面

jQuery+AJAX实现纯js分页功能

使用jQuery的AJAX技术,在bootstrap的框架下搭建的纯js分页 bootstrap作为Twitter推的一款前端框架,效果个人还是觉得很不错的.这次只是拿来作为网页元素的css样式表使用,比较省力,效果也会比自己做要漂亮多了. 使用数据为单独的json文件data.json [plain] view plain copy [ { "name": "bootstrap-table", "stargazers_count": "

VueJS 前端实现分页功能

参考链接 https://www.cnblogs.com/gerry/p/10972685.html element分页 https://xuliangzhan_admin.gitee.io/vxe-table/#/table/advanced/page vxe分页 //等待补充 原文地址:https://www.cnblogs.com/Alex-Mercer/p/12568464.html

前端学习,零基础教程,2019年必看资料

相信大部分小伙伴自学前端的时候毫无头绪,不知道自己该做什么,学习什么,要学的东西太多太乱?既然你看到了这篇文章,那么问题就不大,小编为你整理了一份最全的学习路线,赶快收藏吧!干货福利内容 在文末↓一.HTML.CSS基础.JavaScript语法基础.学完基础后,可以仿照电商网站(例如京东.小米)做首页的布局.二.JavaScript语法进阶.包括:作用域和闭包.this和对象原型等.相信我,JS语法,永远是面试中最重要的部分.三.jQuery.Ajax等.jQuery没有过时,它仍然是前端基础

SEO新手必看:站长工具里的那些功能你知道吗

对于刚接触SEO的SEO来说,站长工具是必不可少的,我们每天要用它来查询网站的情况,很多新站长只看网站的权重.收录.外链.排名,其实站长工具的功能远远不止这些.今天无意间想到了站长工具,没看到有多少人写过这样的文章,今天我就给大家效劳效劳吧.希望大家认真看,这是我一个字一个字打出来的,自己的经验之谈! 功能一:看网站的权重.收录.外链.排名. 这个我们都知道的,这些都是可以很直观的看到,不过在这边提醒大家的事,站长工具里的收录和反链情况不是准确的,我们需要在百度里site和domain,这样的结

国珍竹珍沐浴露14大神奇功能,太强大了,必看!

润滑拉链 假如某天你穿裤子突然觉得拉链拉不上去,卡卡的,这时你老婆直接在你拉链上挤点沐浴露,请不要误会,好么?这只是因为拉链卡住了,滴一滴竹珍沐浴露到卡住的位置再拉,问题就解决了. 润滑剃须刀 如果剃须膏突然没了,可以用洗发水,只要加点水,摇出泡沫就可以用了.竹珍沐浴露的泡沫不仅比肥皂多,而且还不像肥皂那么干哦.同样,姐妹们在剃腿毛的时候,也可以这样试试. 润滑胶带 身上的胶带或贴在墙上的胶带扯不下来了,强行扯,一疼二容易留痕迹,这时滴几滴竹珍沐浴露到胶带上,等它渗下去,再轻轻一拉,胶带就撕下来

网站前端_JavaScript-项目经验.纯JavaScript实现客户端的分页功能?

项目简介: 说明: 此项目属于医院电子病例系统,由于历史原因,整个系统后台基于Java开发,前端使用Html+CSS+原生JavaScript,项目功能模块要求必须纯JS实现,而此次的任务是为住院病例页面编写一个客户端分页功能. 实现思路: 1. 基于客户端分页的前提是数据已经加载完毕,所以此功能模块必须等待数据加载完毕后再加载 2. 基于客户端分页的首页只需要显示24个患者信息即可 3. 上一页/当前页/下一页功能类似,基于当前页面传递同样的参数(页码, 限制患者数),所以自然而然想到了递归,

简单封装分页功能pageView.js

分页是一个很简单,通用的功能.作为一个有经验的前端开发人员,有义务把代码中类似这样公共的基础性的东西抽象出来,一来是改善代码的整体质量,更重要的是为了将来做类似的功能或者类似的项目,能减少不必要的重复工作量.在实际项目中,尤其是网站类型的项目中,分页部分的设计总是个性化比较强,基本上都不会长的一样,所以可能之前抽象出来的东西,如果写的不够灵活的话,对这些个性化强的项目来说,可能直接应用的时候也得做些调整才行.本文尝试提供一个尽量满足这两方面要求的分页组件. 先介绍下写这个东西的背景:一直以来,我

python2.0_day19_前端分页功能的实现

我们前面完成的客户纪录展示,只有4条,如果有上百条就不能在1页中全部展示了,那样是不人性化的.另外一次性取出来,数据量也比较大.假如现在有95条数据,我们想实现一个每页展示20条,那就分为5页.假如我们实现了,那么前端每一次请求就需要给后台提供参数了.这个参数就是告诉views里的视图函数我取第几页.需求分析: 95条,每页20条 第一次请求 返回20条,并且后端返回当前返回是第几页 ,所以第一次返回是1 点击下一页 1+1=2 ,把2传给后端,后端拿到后在把第二页的内容返回给前端,并且把当前返