JavaScript实现前端分页控件

 更新时间:2021年08月20日 13:18:19   作者:小永子  
这篇文章主要为大家详细介绍了JavaScript实现前端分页控件的相关代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

现在web注重用户体验与交互性,ajax 提交数据的方式很早就流行了,它能够在不刷新网页的情况下局部刷新数据。前端分页多是用ajax请求数据(其他方式也有比如手动构造表单模拟提交事件等)。通过js将查询参数构造好发向后台,后台处理后以特定的格式返回,多为json,比较流行处理起来也很方便。当后台数据到达后,浏览器重新渲染界面当然也包括js分页控件,如果觉得每次绘制分页控件对前端性能有影响也可以不绘制,但实现起来相对麻烦。

本人写的分页控件参考了其他网友的代码,链接忘了,控件接受四个参数或一个对象,其实是一样的对于后者只不过将四个参数放在一个对象中。pIndex:每次请求的页码,pSize:每次请求的页容量,container: 放分页控件的容器,fn:如何向服务器请求数据

代码中主要用到了闭包,将上一次的请求信息保存起来,以备下次使用,虽然代码可以直接拿来用但是样式不是通用的,需要每次调样式还好样式比较简单。

function pagination(obj){
    /*pageIndex: index,
pageSize: size,
count:   count,  
container: container,
fn  :   fn
     */
    if(!obj||typeof obj!="object"){
        return false;
    }
    var pageIndex= obj.pageIndex||1,
      pageSize=obj.pageSize||10,
      count= obj.count||0,
      container= obj.container,
      callback=obj.fn||function(){};
    var pageCount =Math.ceil(count/pageSize); 
    if(pageCount==0){
        return false ;
    }  
    if(pageCount<pageIndex){
        return false;
    }
    /*事件绑定*/
    function bindEvent(){
        //上一页事件
        $(container).find(">ul>.pg-prev").unbind("click").bind("click",function(){
                if(pageIndex <=1){
                return false ;
                }
                if(typeof callback=="function"){
                pageIndex--;
                pageIndex = pageIndex<1?1:pageIndex;
                obj.pageIndex= pageIndex;
                callback(pageIndex);
                pagination(obj);
                }
                });
        //下一页事件
        $(container).find(">ul>.pg-next").unbind("click").bind("click",function(){
                if(pageIndex ==pageCount){
                return false ;
                }
                if(typeof callback=="function"){
                pageIndex++;
                pageIndex =pageIndex >pageCount?pageCount:pageIndex;
                obj.pageIndex= pageIndex;
                callback(pageIndex);
                pagination(obj);
                }
                });
        $(container).find(">ul>li:not(.pg-more):not(.pg-prev):not(.pg-next)").unbind("click").bind("click",function(){
                pageIndex= +$(this).html();
                pageIndex = isNaN(pageIndex)?1:pageIndex;
                obj.pageIndex= pageIndex;
                if(typeof callback=="function"){
                callback(pageIndex);
                pagination(obj);
                }
                });
    };

    /*画样式*/
    function printHead(){
        var html=[];
        html.push('<li class="pg-prev '+(pageIndex==1?"pg-disabled":"")+'">上一页</li>');
        return html.join("");
    }
    function printBody(){
        var html=[];
        var render=function(num,start){
            start=start||1;
            for(var i=start;i<=num;i++){
                html.push('<li class="'+(pageIndex==i?"pg-on":"")+'">'+i+'</li>');
            }
        }
        if(pageCount<=7){
            render(pageCount);
        }else{
            if(pageIndex <4){
                render(4);
                html.push('<li class="pg-more">...</li>');
                html.push('<li >'+pageCount+'</li>');    
            }else{
                html.push('<li >1</li>');  
                html.push('<li class="pg-more">...</li>');
                if(pageCount-pageIndex>3){
                    render(pageIndex+1,pageIndex-1);
                    html.push('<li class="pg-more">...</li>');
                    html.push('<li >'+pageCount+'</li>');
                }else{
                    render(pageCount,pageCount-3);
                }
            }
        }
        return html.join("");
    }
    function printTail(){
        var html=[];
        html.push('<li class="pg-next '+(pageIndex==pageCount?"pg-disabled":"")+'">下一页</li>');
        return html.join("");
    }
    function show(){
        container.innerHTML= '<ul>'+printHead()+printBody()+printTail()+'</ul>';
    }
    show();
    bindEvent();
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • javascript禁用键盘功能键让右击及其他键无效

    javascript禁用键盘功能键让右击及其他键无效

    禁用键盘功能键的方法有很多,在本文为大家详细介绍下,使用javascript如何实现禁用键盘功能键及其他键的方法,感兴趣的朋友可以参考下
    2013-10-10
  • js 调整select 位置的函数

    js 调整select 位置的函数

    js 调整select 位置的函数,向上移动,向下移动,移动到最上,移动到最后 这里把项目中写过的几个js函数来给大家分享,功能是通过js来实现对select 中的option的位置进行移动,代码如下
    2008-02-02
  • JS实现屏蔽shift,Ctrl,alt等功能键的方法

    JS实现屏蔽shift,Ctrl,alt等功能键的方法

    这篇文章主要介绍了JS实现屏蔽shift,Ctrl,alt等功能键的方法,涉及javascript针对键盘按键的获取与操作技巧,需要的朋友可以参考下
    2015-06-06
  • Echarts图表如何利用formatter自定义tooltip的内容和样式

    Echarts图表如何利用formatter自定义tooltip的内容和样式

    这篇文章主要给大家介绍了关于Echarts图表如何利用formatter自定义tooltip的内容和样式的相关资料,echarts的图表配置非常的灵活自由,但是不熟悉的时候容易不知道怎么配置,需要的朋友可以参考下
    2023-06-06
  • 在webstorm中配置less的方法详解

    在webstorm中配置less的方法详解

    这篇文章主要介绍了在webstorm中配置less的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-09-09
  • 微信小程序ibeacon三点定位详解

    微信小程序ibeacon三点定位详解

    这篇文章主要为大家详细介绍了微信小程序ibeacon三点定位的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • bootstrap table表格客户端分页实例

    bootstrap table表格客户端分页实例

    这篇文章主要为大家详细介绍了bootstrap table表格客户端分页实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 用纯JS实现二级菜单效果

    用纯JS实现二级菜单效果

    这篇文章主要为大家详细介绍了用纯JS实现二级菜单效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • JS设计模式之状态模式概念与用法分析

    JS设计模式之状态模式概念与用法分析

    这篇文章主要介绍了JS设计模式之状态模式概念与用法,简单讲述了状态模式的概念、功能、应用场景并结合javascript实例形式分析了状态模式的简单定义及使用方法,需要的朋友可以参考下
    2018-02-02
  • 利用javascript中的call实现继承

    利用javascript中的call实现继承

    利用javascript中的call实现继承...
    2007-01-01

最新评论