javascript自动计算分页信息

本文介绍了一个名为jsPaging的JavaScript函数,用于自动计算分页信息。该函数接受一个参数对象,包含总条数(rsCount)、每页大小(pageSize)、分页数量(pageCount)、当前页数(pageIndex)、步长(pageStepNumber)、步进数组(pageStep)、是否为首页(pageIsHome)和是否有尾页(pageIsEnd)等属性,从而实现灵活的分页逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function jsPading (_params){
var _default = {
rsCount : 0, //总条数
pageSize : 10, //每页大小
pageCount : 0, //分页数量
pageIndex : 1, //当前第几页
pageStepNumber : 3, //步长
pageStep : [], //步进
pageIsHome : false, //是否是首页
pageIsEnd : false //是否有尾页
};

    //加载参数,如果为undefined则不覆盖,null会替换当前参数
    var params = xyd.formatArguments(arguments);
    _default = $.extend(true,_default , params["object"]);

    //全部进行Number转换,防止类型不正确导致计算失败
    _default = {
        rsCount : Number(_default.rsCount),         
        pageSize : Number(_default.pageSize),           
        pageCount : Number(_default.pageCount),             
        pageIndex : Number(_default.pageIndex),         
        pageStepNumber : Number(_default.pageStepNumber)
    };

    //验证转换结果
    for(var i in _default){
        //如果为null,或者转换失败,则会出现NaN    
        if(_default[i].toString()=="NaN"){
            throw new Error("jsPading params error");
        }
    }

    //如果记录数小于1,修正为0,防止负数出现
    _default.rsCount = _default.rsCount < 1 ? 0 : _default.rsCount;

    //总分页数
    _default.pageCount = _default.rsCount%_default.pageSize==0
        ? _default.rsCount/_default.pageSize 
        : parseInt(_default.rsCount/_default.pageSize)+1;

    //修正当前页     
    _default.pageIndex = _default.pageIndex>_default.pageCount ? _default.pageCount : _default.pageIndex;
    _default.pageIndex = _default.pageIndex<1 ? 1 : _default.pageIndex;

    //根据用户想看的页pagenum,算出页面的起始和结束页码
    _default.pageStepNumber = _default.pageStepNumber<3 ? 3 : _default.pageStepNumber;

    if(_default.pageCount<=_default.pageStepNumber){
        //如果不是最后
        _default.pageStep = [1,_default.pageCount];
    }else{
        _default.pageStep = [_default.pageStepNumber%2==0
            ?_default.pageIndex-parseInt(_default.pageStepNumber/2-1)
            :_default.pageIndex- parseInt(_default.pageStepNumber/2),_default.pageIndex + parseInt(_default.pageStepNumber/2)];
    }

    _default.pageStep = _default.pageStep[0]<1
        ? [1,_default.pageStepNumber]
        : _default.pageStep;

    _default.pageStep = _default.pageStep[1]>_default.pageCount 
        ? [_default.pageCount-(_default.pageStepNumber-1),_default.pageCount]
        : _default.pageStep;

    _default.pageStep = _default.pageStep[0]>_default.pageStep[1] 
        ? [_default.pageStep[1],_default.pageStep[1]] 
        : _default.pageStep;

    _default.pageStepList = [];
    for(var i=_default.pageStep[0];i<=_default.pageStep[1];i++){
        _default.pageStepList.push(i);
    }

    _default.pageIsHome = _default.pageIndex > 1 ? true : false;
    _default.pageIsEnd = _default.pageIndex < _default.pageCount ? true : false;

    _default.result = ""
        + "记录数["+_default.rsCount+"]"
        + ",每页大小["+_default.pageSize+"]"
        + ",分页数["+_default.pageCount+"]"
        + ",当前页索引["+_default.pageIndex+"]"
        + ",步进["+_default.pageStep+"]"
        + ",步长["+_default.pageStepNumber+"]"
        + ",是否有首页["+_default.pageIsHome+"]"
        + ",是否有尾页["+_default.pageIsEnd+"]"
    return _default;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值