分頁公式以及分頁導覽列總結

來源:互聯網
上載者:User
在實際編程中,經常需要把大量資料分頁顯示,並且要提供一個分頁導覽列供使用者選擇。現總結出一個用於常規分頁的公式,這個公式比較簡潔而且具有普適性。頁數=(記錄總數+每頁記錄數-1)/ 每頁記錄數注意,這裡的除法是整除。舉例驗證,假設總記錄數為10條,要求每頁顯示5條,則頁數=(10+5-1)/5=2。若總記錄數改為11條,仍然要求每頁顯示5條,則頁數=(11+5-1)/5=3。這與實際情況是如符合的。除此之外,還需要給使用者提供一個分頁導覽列,便於使用者翻頁。筆者觀察過很多網站的分頁導覽列,認為Google的分頁導覽列是最好的。它提供了頁碼和上下翻動兩種方式,而且導覽列上顯示的頁碼總是與當前頁的頁碼相鄰的若干個數。(a)      當前頁為第1頁(b)     當前頁為第8頁(c)      當前頁為最後一頁圖4.5  Google的分頁導覽列經過觀察不難發現,Google的分頁導覽列的頁碼顯示有這樣一個規律。就是當前頁碼的左側最多顯示10個比它小的頁碼,右側最多顯示9個比它大的頁碼。那麼基本的思路就是這樣的,已知當前頁碼為N,則導覽列頁碼左邊界暫設為N-10,如果N-10<1,再調整左邊界為1。導覽列頁碼右邊界暫設為N+9,如果N+9>總頁數,再調整右邊界為總頁數。我們可以驗證一下,圖4.3(b)中,當前頁為8, 8-10= -2,-2小於1,所以左邊界調整為1。8+9=17,17<24(總頁數),所以右邊界仍為17。具體的JavaScript實現代碼如下所示:function showpager(cur,max){    var beindex=cur-10;  //假定左邊界    var endindex=cur+9;  //假定右邊界    if(beindex<1)beindex=1;  //微調    if(endindex>max)endindex=max;     if(cur>1)document.write("<a href='Board.aspx?pageno="+(cur-1)+"'>上一頁</a>&nbsp;");    for(i=beindex;i<=endindex;i++){        if(i==cur){            document.write("<strong>"+i+"<strong>&nbsp;&nbsp;");        }        else{            document.write("<a href='Board.aspx?pageno="+i+"'>"+i+"</a>&nbsp;&nbsp;");        }    }    if(cur<max){        document.write("<a href='Board.aspx?pageno="+(cur+1)+"'>下一頁</a>");    }}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.