原生js实现数据分页展示

直接贴码~

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./index.css">
</head>

<body>
    <!-- 列表 -->
    <table class="table table-hover table-striped" id="table_result">
        <thead>
            <tr>
                <th>titieOne</th>
                <th>titleTwo</th>
                <th>titleThree</th>
            </tr>
        </thead>
        <tbody id="result">
            <tr>
                <td>1</td>
                <td>1</td>
                <td>1</td>
            </tr>
            <tr>
                <td>2</td>
                <td>2</td>
                <td>2</td>
            </tr>
            <tr>
                <td>3</td>
                <td>3</td>
                <td>3</td>
            </tr>
            <tr>
                <td>4</td>
                <td>4</td>
                <td>4</td>
            </tr>
            <tr>
                <td>5</td>
                <td>5</td>
                <td>5</td>
            </tr>
            <tr>
                <td>6</td>
                <td>6</td>
                <td>6</td>
            </tr>
            <tr>
                <td>7</td>
                <td>7</td>
                <td>7</td>
            </tr>
            <tr>
                <td>8</td>
                <td>8</td>
                <td>8</td>
            </tr>
            <tr>
                <td>9</td>
                <td>9</td>
                <td>9</td>
            </tr>
            <tr>
                <td>10</td>
                <td>10</td>
                <td>10</td>
            </tr>
        </tbody>
    </table>
    <!-- 分页生成的页码在这里显示 -->
    <div class="col-sm-6">
        <div class="dataTables_info" id="info"></div>
    </div>
    <div class="col-sm-6">
        <div class="dataTables">
            <ul class="pagination" id="pagination">
                //
                <li>
                    <a></a>
                </li>
            </ul>
        </div>
    </div>
</body>

</html>

<script>
    // 分页功能
    goPage(1, 2); // 我这里调用每页显示两条从一页开始


    function goPage(pno, psize) {
        var itable = document.getElementById("result"); //通过ID找到表格
        var idecs = document.getElementById("info");
        var num = itable.rows.length; //表格所有行数(所有记录数)
        var totalPage = 0; //总页数
        var pageSize = psize; //每页显示行数
        //总共分几页(总页数/每页要显示的行数)
        if (num % pageSize != 0) {
            totalPage = parseInt(num / pageSize) + 1;
        } else {
            totalPage = parseInt(num / pageSize);
        }

        var currentPage = pno; //当前页数
        var startRow = (currentPage - 1) * pageSize + 1; //开始显示的行 1
        var endRow = currentPage * pageSize; //结束显示的行   3
        endRow = (endRow > num) ? num : endRow;

        for (var i = 1; i < num + 1; i++) { //遍历所有数据,rows[i]是从0开始,但是后面与startRow做比较,所以i从1开始;
            var irow = itable.rows[i - 1]; //i-1,数据重0开始显示
            if (i >= startRow && i <= endRow) {
                irow.style.display = "table-row";

            } else {
                irow.style.display = "none";
            }
        }

        // 给DOM添加页码
        var tempStr = "";
        // 上一页
        if (currentPage > 1) { //若当前页不是第一页,则可以添加点击事件跳转到前一页
            tempStr += "<li><a href=\"#\" onClick=\"goPage(" + 1 + "," + psize + ")\">首页</a></li>";
            tempStr += "<li><a href=\"#\" onClick=\"goPage(" + (currentPage - 1) + "," + psize + ")\"><上一页</a></li>";

        } else { //若当前页是第一页,则不添加点击事件
            tempStr += "<li><a href=\"#\">首页</a></li>";
            tempStr += "<li><a href=\"#\"><上一页</a></li>";

        }
        // 中间页 (这里的代码仔细看,是通过if语句来判断当前点击的是哪一页,再进行拼接省略号(...),根据当前页显示页码的个数可以自己改)  
        if (totalPage < 5) {
            for (var j = 1; j <= totalPage; j++) {
                tempStr += "<li><a href=\"#\" class=\"active\" onClick=\"goPage(" + j + "," + psize + ")\">" + j + "</a></li>";
            }
        } else if (totalPage > 5) {
            if (currentPage < 5) {
                for (var j = 1; j <= 5; j++) {
                    tempStr += "<li><a href=\"#\" class=\"active\" onClick=\"goPage(" + j + "," + psize + ")\">" + j + "</a></li>";
                }
                tempStr += "<li><a href=\"#\">...</a></li>";
            } else if (currentPage >= 5) {
                for (var j = 1; j <= 3; j++) {
                    tempStr += "<li><a href=\"#\" class=\"active\" onClick=\"goPage(" + j + "," + psize + ")\">" + j + "</a></li>";
                }
                tempStr += "<li><a href=\"#\">...</a></li>";
                if (currentPage + 1 == totalPage) {
                    for (var j = currentPage - 2; j <= totalPage; j++) { //当前页点击到倒数第二个页码时,...后面3个页码显示出来
                        tempStr += "<li><a href=\"#\" class=\"active\" onClick=\"goPage(" + j + "," + psize + ")\">" + j + "</a></li>";
                    }
                } else if (currentPage == totalPage) { //如果当前就是最后一页,那么...后面显示3个页码
                    for (var j = currentPage - 3; j <= totalPage; j++) {
                        tempStr += "<li><a href=\"#\" class=\"active\" onClick=\"goPage(" + j + "," + psize + ")\">" + j + "</a></li>";
                    }
                } else { //其他情况:总页码大于当前页码
                    for (var j = currentPage; j <= totalPage - 1; j++) {
                        tempStr += "<li><a href=\"#\" class=\"active\" onClick=\"goPage(" + j + "," + psize + ")\">" + j + "</a></li>";
                    }
                    tempStr += "<li><a href=\"#\">...</a></li>";
                }
            }
        }

        // 下一页
        if (currentPage < totalPage) {
            tempStr += "<li><a href=\"#\" onClick=\"goPage(" + (currentPage + 1) + "," + psize + ")\">下一页></a></li>";
            tempStr += "<li><a href=\"#\" onClick=\"goPage(" + totalPage + "," + psize + ")\">尾页</a></li>";

        } else {
            tempStr += "<li><a href=\"#\"><下一页</a></li>";
            tempStr += "<li><a href=\"#\">尾页</a></li>";
        }
        document.getElementById("pagination").innerHTML = tempStr;
        idecs.innerHTML = "共" + num + "条记录,分" + totalPage + "页显示,当前" + currentPage + "页";
        var arr = document.getElementsByTagName("a");
        // 这里用来实现点击切换样式
        for (var i = 0; i < arr.length; i++) {
            if (arr[i].innerHTML == pno && arr[i].className.indexOf('active') > -1) {
                console.log(pno)
                console.log(arr[i])
                arr[i].style.color = 'red'
            }
        }
    }
</script>

含有注释

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值