純js實現數據分頁顯示


寫在前面:最近寫頁面時,后台返回數據,需要在前端進行數據分頁展示;看了很多前人寫的代碼,再自己改了下,最終實現效果;俗話說,前人種樹,后人乘涼,就是這個道理吧

數據分頁展示

這里是很簡單的后台數據展示之后,在前端用js代碼實現分頁;可以用ajax從后台獲取數據,然后再進行分頁展示

效果如下:

剛加載時的效果:

 點擊中間按鈕時的效果:

 點擊最后一頁出現的效果:

 代碼如下:

<!-- 列表 --> 
<table class="table table-hover table-striped" id="table_result">
        <thead>
            <tr>
                <th>日期</th>
                <th>小時</th>
                <th>溫度</th>
            </tr>
        </thead>
        <tbody id="result">
            <tr>
                <td>2017-01-10</td>
                <td>1</td>
                <td>20℃</td>
            </tr>
            <tr>
                <td>2018-01-10</td>
                <td>2</td>
                <td>25℃</td>
            </tr>
            <tr>
                <td>2019-01-10</td>
                <td>5</td>
                <td>28℃</td>
            </tr>
            <tr>
                <td>2020-01-10</td>
                <td>8</td>
                <td>30℃</td>
            </tr>
            <tr>
                <td>2020-05-10</td>
                <td>20</td>
                <td>20℃</td>
            </tr>
            <tr>
                <td>2020-10-10</td>
                <td>25</td>
                <td>15℃</td>
            </tr>
            <tr>
                <td>2019-12-10</td>
                <td>20</td>
                <td>27℃</td>
            </tr>
            <tr>
                <td>2020-01-28</td>
                <td>20</td>
                <td>20℃</td>
            </tr>
            <tr>
                <td>2017-01-10</td>
                <td>1</td>
                <td>20℃</td>
            </tr>
            <tr>
                <td>2018-01-10</td>
                <td>2</td>
                <td>25℃</td>
            </tr>
            <tr>
                <td>2020-01-10</td>
                <td>1</td>
                <td>20℃</td>
            </tr>
            <tr>
                <td>2018-01-10</td>
                <td>2</td>
                <td>25℃</td>
            </tr>
            <tr>
                <td>2019-01-10</td>
                <td>5</td>
                <td>28℃</td>
            </tr>
            <tr>
                <td>2020-01-10</td>
                <td>8</td>
                <td>30℃</td>
            </tr>
            <tr>
                <td>2020-05-10</td>
                <td>20</td>
                <td>20℃</td>
            </tr>
            <tr>
                <td>2020-10-10</td>
                <td>25</td>
                <td>15℃</td>
            </tr>
            <tr>
                <td>2019-12-10</td>
                <td>20</td>
                <td>27℃</td>
            </tr>
            <tr>
                <td>2020-01-28</td>
                <td>20</td>
                <td>20℃</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>

 

       
// 分頁功能 goPage(1,1); 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+"頁"; }

 前端新手,多多指教


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM