真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

從零開始做一個pagination分頁組件

開始一個組件,毫無目的的寫代碼是一個不好的習慣,要經歷 分析 => 抽象 => 實現(xiàn) => 應用 四個階段。

我們提供的服務有:網站制作、成都網站建設、微信公眾號開發(fā)、網站優(yōu)化、網站認證、云溪ssl等。為上千家企事業(yè)單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的云溪網站制作公司

組件DEMO地址:https://github.com/CaptainLiao/zujian/tree/master/pagination

分析需求

當前頁碼顯示前后三頁,以及在兩端顯示上一頁、下一頁

未顯示的地方用 ‘...'代替

舉個栗子:

假設總共有30頁

當前為第一頁:1 2 3 4 ... 30 下一頁

當前為第二頁:上一頁 1 2 3 4 5 ... 30 下一頁

當前為第三頁:上一頁 1 2 3 4 5 6 ... 30 下一頁
.

當前為第6頁:上一頁 1 ... 3 4 5 6 7 8 9 ... 30 下一頁
.

當前為第29頁:上一頁 1 ... 26 27 28 29 30 下一頁

當前為第30頁:上一頁 1 ... 27 28 29 30

抽象

分析上面的例子,發(fā)現(xiàn)決定輸出的因素有兩個:當前頁碼和總頁數(shù)。

于是,我們設定一個函數(shù)用來表示當前頁碼的顯示內容:

/**
 * @param {Number} page 當前頁
 * @param {Number} totalPage 總頁數(shù) 
 */
function pagination(page, totalPage) {
  var str = '';
  // todo...

  return str;
}

// 運行函數(shù),打印出值

var ret = pagination(4, 30)

console.log(ret)

>上一頁 1 2 3 4 5 6 7 ... 30 下一頁

實現(xiàn)

輸入和輸出都有了,接著正式開始擼:

function pagination(page, totalPage) {
  var str = page;
  // 這里實現(xiàn)當前頁面顯示前后三項功能
  for(var i=1; i< totalPage; i++) {
    if(page-i>1) {
      str = page-i +' '+ str;
    }
    if(page + i < totalPage) {
      str = str + ' ' + (page+i)
    }
  }

  // 以page為中心,向左右擴展

  // 向左,先判斷當前page向左的第四個數(shù)是否大于 1
  if(page-4 > 1) {
    str = '... ' + page;
  }
  // 繼續(xù)向左判斷
  if(page >1) {
    str = "上一頁" + '... ' +1 +' ' +str;
  }
  // 向右,判斷當前page向右的第四個數(shù)字是否小于 totalPage
  if(page + 4 < totalPage) {
    str = '... '+ str;
  }
  if(page < totalPage) {
    str = str +' ' + totalPage +' '+ '下一頁';
  }
  return str;
}

現(xiàn)在,我們可以執(zhí)行下面的函數(shù),取得我們想要的結果:

  var total = 30;
  for(var i = 1; i< total; i++) {
   var ret = showPage(i, total);
   console.log(ret)
  }

至此,我們已經實現(xiàn)了分頁的邏輯。

應用

接下來的應用就非常簡單了,不外乎是給str 加一些標簽和class,于是我們就得到了一個分頁組件:

HTML:

javascript:

  function pagination(page, totalPage) {
    var str = '
  • '+page+'
  • '; for(var i=1; i<=3; i++) { if(page - i > 1) { str = '
  • '+(page-i)+'
  • ' +' '+ str; } if(page + i < totalPage) { str = str +" "+'
  • '+(page+ i)+'
  • ' } } if(page-4 >1) { str = '
  • ...
  • ' +str; } if (page >1) { str= '
  • 上一頁
  • '+ ' '+'
  • 1
  • ' +' '+ str; } if(page+4< totalPage) { str = str+ '
  • ...
  • '; } if(page < totalPage) { str = str + " " +'
  • '+totalPage+'
  • ' +" " +'
  • 下一頁
  • ' } return str; } var totalPage = 30; var str = pagination(1, totalPage); var wrap = $("#pagination-list"); // 這里引用了 jQuery wrap.html(str) .on('click', '.page-item', function () { var cur = parseInt($(this).text()); wrap.html(pagination(cur, totalPage)); });

    看看效果吧:

    從零開始做一個pagination分頁組件

    目前來說,進展順利,但是!還有很多需要優(yōu)化的地方:樣式固定,不能自由更改;初始化和交互混雜在一起,沒有對代碼進行封裝...

    又經過一番折騰,這個分頁組件終于完成,下載demo:

    https://github.com/CaptainLiao/zujian/tree/master/pagination

    現(xiàn)在,我們可以這樣調用它:

    
    

    是不是很酸爽呢?

    如果繼續(xù)擴展,我們還可以給組件更多的樣式選擇......

    以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


    當前名稱:從零開始做一個pagination分頁組件
    本文路徑:http://weahome.cn/article/jjoidh.html

    其他資訊

    在線咨詢

    微信咨詢

    電話咨詢

    028-86922220(工作日)

    18980820575(7×24)

    提交需求

    返回頂部