原生js简单分页

样式丑了点,还有bug和优化的地方,不过大致上就是这样,提供思路,仅供参考。
html

<div class="pagination">
        <span>每页显示</span>
        <input id="perPage" type="text" onchange="perPageChange()">
        <span>条/共</span>
        <span id="total"></span>
        <span>条记录,共</span>
        <span id="pages"></span>
        <span></span>
        <button class="actionBtn actionBtnHover" onclick="firstpage()">首页</button>
        <button class="actionBtn actionBtnHover" onclick="prevpage()">上一页</button>
        <span></span>
        <input id="numPages" type="text" onchange="numPagesChange()">
        <span></span>
        <button class="actionBtn actionBtnHover" onclick="nextpage()">下一页</button>
        <button class="actionBtn actionBtnHover" onclick="endpage()">尾页</button>
        <button class="actionBtn" onclick="gopage()">跳转</button>
    </div>

css

.pagination{
    height: 50px;
    border: 1px solid #ccc;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    font-size: 12px;
    padding-right: 10px;
}
#perPage,#numPages{
    width: 30px;
    outline: none;
    border:1px solid #ccc;
    text-align: center;
}
.actionBtn{
    margin: 0 1px;
    outline: none;
    background-color: #fff;
    border:1px solid #ccc;
    cursor: pointer;
}
.actionBtnHover:hover{
    color: #fff;
    background-color: #1F85EC;
}

js

var pagination = {
    page:1,
    size:10,
    total:100,
    pages:10,
};
function pagingInit(){
    document.getElementById('numPages').value = pagination.page;/* 第几页 */
    document.getElementById('total').innerText = pagination.total;/* 总条数 */
    document.getElementById('pages').innerText = pagination.pages;/* 总页数 */
    document.getElementById('perPage').value = pagination.size;/* 每页显示的条数 */
    if(pagination.page ==1){
        for(var i=0;i<document.getElementsByClassName('actionBtn').length;i++){
            if(pagination.page == pagination.pages){
                document.getElementsByClassName('actionBtn')[i].classList.remove('actionBtnHover');
                document.getElementsByClassName('actionBtn')[i].setAttribute("disabled", "disabled");
            }else{
                if(i>=2){
                    document.getElementsByClassName('actionBtn')[i].classList.add('actionBtnHover');
                    document.getElementsByClassName('actionBtn')[i].removeAttribute("disabled");
                }else{
                    document.getElementsByClassName('actionBtn')[i].classList.remove('actionBtnHover');
                    document.getElementsByClassName('actionBtn')[i].setAttribute("disabled", "disabled");
                }
            }
        }
    }else{
        for(var i=0;i<document.getElementsByClassName('actionBtn').length;i++){
                document.getElementsByClassName('actionBtn')[i].classList.add('actionBtnHover');
                document.getElementsByClassName('actionBtn')[i].removeAttribute("disabled");
        }
    };
    if(pagination.page == pagination.pages){
        for(var i=0;i<document.getElementsByClassName('actionBtn').length;i++){
            if(i==2||i==3){
                document.getElementsByClassName('actionBtn')[i].classList.remove('actionBtnHover');
                document.getElementsByClassName('actionBtn')[i].setAttribute("disabled", "disabled");
            }else{
                document.getElementsByClassName('actionBtn')[i].classList.add('actionBtnHover');
                document.getElementsByClassName('actionBtn')[i].removeAttribute("disabled");
            }
        }
    }
};
window.onload = function () {
    pagingInit();
};
function perPageChange(){/* 每页显示的条数 */
    pagination.size = Number(document.getElementById('perPage').value);
};
function firstpage(){/* 首页 */
    pagination.page = 1;
    pagingInit();
};
function prevpage(){/* 上一页 */
    if(pagination.page>1){
        pagination.page--;
    }
    pagingInit();
};
function numPagesChange(){/* 第几页 */
    pagination.page = Number(document.getElementById('numPages').value);
};
function nextpage(){/* 下一页 */
    if(pagination.page<pagination.pages){/* 在总页数之内 */
        pagination.page++;
    }
    pagingInit();
};
function endpage(){/* 尾页 */
    pagination.page = pagination.pages;
    pagingInit();
};
function gopage(){/* 跳转 */
    pagingInit();
};
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值