JavaScript实现分页显示

分页常见于前端多数据页面,现有的分页插件不可胜数,我分享一种构建分页显示的方法,目标是将当前也放在带显示数组的中间,如(以10页为例):

< 1 2 3 4 >

< 2 3 4 5 >

< 7 8 9 10 >

废话不多说,直接上代码:

// 参数:当前页码,页码显示数,页码总数
function getPage(current, showCnt, pageCnt) {
    var array = []
    for (var i = 0; i < pageCnt; i++) {
        array.push(i + 1)
    }
    if (pageCnt <= showCnt) {
        return array.splice(0, pageCnt)
    } else if (pageCnt - current < showCnt - 1) {
        // 避免这种现象(12, 4, 15)
        return array.splice(pageCnt - showCnt, showCnt)
    } else if (current - Math.ceil(showCnt / 2) >= 0) {
        return array.splice(current - Math.ceil(showCnt / 2), showCnt)
    } else {
        return array.splice(0, showCnt)
    }
}

页码要想正常显示就得考虑以下四种情况:

1.页码显示数小于页码总数。这种情况不管当前是第几页都要显示全部的页码,如(以3页,显示4个):< 1 2 3 >、< 1 2 3 > 、< 1 2 3 >

2.页码显示数大于页码总数,末尾的部分。这种情况不管当前是第几页都要显示最后n个页码(以10页,显示4个为例):< 6 7 8 9 >、< 7 8 9 10 >、< 7 8 9 10 >、< 7 8 9 10 >。对于这种情况需要特别说明:< 6 7 8 9 >这是不属于该情况的范畴,否则就该显示为< 7 8 9 10 >,这显然不是我们希望的结果。

3.页码显示数大于页码总数,而且是最中间的部分。这种情况是最常见的情况,应该保证当前页码在所有显示页码的正中间(以10页,显示4个为例):< 2 3 4 5 >、< 3 4 5 6 >、< 4 5 6 7 >、< 5 6 7 8 >、<  6 7 8 9 >。

4.页码显示数大于页码总数,最前面的部分。这种情况不管当前是第几页都要显示最前面的n个页码(以10页,显示4个为例):< 1 2 3 4 >、< 1 2 3 4 >。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值