1. 程式人生 > >js中的分頁

js中的分頁

{} 核心 情況 get == set for pre 哈哈

分頁是前端經常會用到的一個非常實用的一個知識點,今天閑來沒事,做了一個小demo,雖然樣子,比較醜,哈哈哈,但是這是分頁的核心思想都在,希望能給某個小夥伴一些啟發。可直接復制在編輯器中運行。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            a{
                margin:5px;
            }
        
</style> </head> <body> <div id="div1"> </div> </body> <script> //采用組件的寫法 page({ id:‘div1‘, nowNum:10,    //當前的頁碼 allNum:10,    //總共的頁碼 callBack:function(now,all){ alert(
‘當前頁:‘+now+‘總共頁:‘+all); } }) function page(opt){ if(!opt.id)return false; //如果沒有傳元素,就不向下執行了 var obj = document.getElementById(opt.id); var nowNum = opt.nowNum || 1; //默認的處理 var allNum = opt.allNum || 5; var
callBack = opt.callBack || function(){}; //首頁 if(nowNum>=4&&allNum>=6){ var oA = document.createElement(‘a‘); oA.href = ‘#1‘; oA.innerHTML = ‘首頁‘; obj.appendChild(oA); } //上一頁 if(nowNum>=2){ var oA = document.createElement(‘a‘); oA.href = ‘#‘+(nowNum-1); oA.innerHTML = ‘上一頁‘; obj.appendChild(oA); } //當總頁數小於等於5頁的情況 if(allNum<=5){ for(var i=1;i<=allNum;i++){ var oA = document.createElement(‘a‘); oA.href = ‘#‘+i; if(nowNum == i){ //當前頁的處理 oA.innerHTML = i; }else{ oA.innerHTML = ‘[‘ + i + ‘]‘; } obj.appendChild(oA); } }else{ //當總頁數大於5頁的情況 for(var i=1;i<=5;i++){ var oA = document.createElement(‘a‘); if(nowNum == 1 || nowNum == 2){ //對當前頁是第一頁和第二頁的時候做一個特殊處理 oA.href = ‘#‘+ i; if(nowNum == i){ oA.innerHTML = i; }else{ oA.innerHTML = ‘[‘ + i + ‘]‘; } }else if((allNum-nowNum) == 0 || (allNum-nowNum) == 1){ //最後兩個頁碼做特殊處理 oA.href = ‘#‘+ (allNum-5+i); if((allNum - nowNum) == 0 && i == 5){ //這一塊的邏輯較為復雜 oA.innerHTML = (allNum -5+i); }else if((allNum - nowNum) == 1 && i == 4){ oA.innerHTML = (allNum -5+i); }else{ oA.innerHTML = ‘[‘+(allNum-5+i)+‘]‘; } }else{ oA.href = ‘#‘+ (nowNum-3+i); if(i==3){ oA.innerHTML = (nowNum-3+i); }else{ oA.innerHTML = ‘[‘+(nowNum-3+i)+‘]‘; } } obj.appendChild(oA); } } //下一頁 if((allNum-nowNum)>=1){ var oA = document.createElement(‘a‘); oA.href = ‘#‘+(nowNum+1); oA.innerHTML = ‘下一頁‘; obj.appendChild(oA); } //尾頁 if((allNum-nowNum)>=3 && allNum>=6){ var oA = document.createElement(‘a‘); oA.href = ‘#‘+allNum; oA.innerHTML = ‘尾頁‘; obj.appendChild(oA); } //執行回調 callBack(nowNum,allNum); //添加點擊事件 var aA = obj.getElementsByTagName(‘a‘); for(var i=0;i<aA.length;i++){ aA[i].onclick = function(){ var nowNum = parseInt(this.getAttribute(‘href‘).substring(1)) //註意這裏獲取href的時候不要用this.href,因為這樣獲取到的是一個絕對地址,要用getAttribute //獲取到此刻的頁碼,重新渲染 obj.innerHTML = ‘‘; //清空 page({ id:opt.id, nowNum:nowNum, allNum:allNum, callBack:callBack }); return false; //阻止默認事件 } } } </script> </html>

js中的分頁