在現(xiàn)在的網(wǎng)頁開發(fā)中,分頁已經(jīng)成為了一個(gè)非常常見的功能。而實(shí)現(xiàn)分頁的方法中,javascript也成為了一種比較流行的方式。在本文中,我們將介紹javascript如何實(shí)現(xiàn)分頁功能。
分頁功能的實(shí)現(xiàn)可以分為兩個(gè)步驟。第一步是計(jì)算總頁數(shù),第二步是顯示具體頁碼。下面我們分別來介紹。
第一步:計(jì)算總頁數(shù)
首先,我們需要確定每頁的數(shù)據(jù)量以及總數(shù)據(jù)量。然后,我們就可以使用Math.ceil()函數(shù)來計(jì)算總頁數(shù)。
例如,如果我們有總共30條數(shù)據(jù),每頁顯示10條,那么總頁數(shù)就是3頁。代碼如下:
var total = 30; //總數(shù)據(jù)量 var pageSize = 10; //每頁顯示的數(shù)據(jù)量 var pageCount = Math.ceil(total/pageSize); //計(jì)算總頁數(shù)第二步:顯示具體頁碼 接下來,我們就需要在頁面上顯示具體的頁碼了。我們可以使用一個(gè)循環(huán)來顯示所有的頁碼,也可以使用一些插件來實(shí)現(xiàn)更為復(fù)雜的分頁效果。這里我們先介紹一種比較簡單的分頁方式。 我們需要先確定當(dāng)前頁碼,然后顯示當(dāng)前頁碼前面和后面的頁碼,以便用戶能夠點(diǎn)擊進(jìn)行跳轉(zhuǎn)。如果當(dāng)前頁碼比較靠前或靠后,我們還需要顯示省略號(hào),表示有更多的頁碼未顯示。 代碼如下:
function showPage(pageIndex){ var strPage = ""; //用于保存生成的頁碼HTML代碼 if(pageIndex<1){ pageIndex = 1; //如果當(dāng)前頁碼小于1,就設(shè)置為1 } else if(pageIndex>pageCount){ pageIndex = pageCount; //如果當(dāng)前頁碼大于總頁數(shù),就設(shè)置為總頁數(shù) } var startPage = pageIndex - 2; //計(jì)算開始頁碼 if(startPage<1){ startPage = 1; //如果開始頁碼小于1,就設(shè)置為1 } var endPage = startPage + 4; //計(jì)算結(jié)束頁碼 if(endPage>pageCount){ endPage = pageCount; //如果結(jié)束頁碼大于總頁數(shù),就設(shè)置為總頁數(shù) startPage = endPage - 4; //重新計(jì)算開始頁碼 if(startPage<1){ startPage = 1; //如果開始頁碼小于1,就設(shè)置為1 } } if(startPage>1){ strPage += "上一頁"; //如果開始頁碼大于1,就添加上一頁按鈕 } if(startPage>2){ strPage += "1... "; //如果開始頁碼大于2,就添加省略號(hào)和第一頁鏈接 } for(var i=startPage;i<=endPage;i++){ if(i==pageIndex){ strPage += "" + i + ""; //如果是當(dāng)前頁碼,就添加當(dāng)前頁碼樣式 } else{ strPage += "" + i + ""; //否則添加頁碼鏈接 } } if(endPage上面的代碼中使用了一個(gè)goPage函數(shù),用于跳轉(zhuǎn)到指定頁碼。這個(gè)函數(shù)需要根據(jù)實(shí)際情況來編寫。例如,如果使用ajax加載數(shù)據(jù)并顯示到頁面上,就需要在這個(gè)函數(shù)中寫上ajax請求的代碼。如果使用iframe或者跳轉(zhuǎn)頁面的方式來實(shí)現(xiàn)分頁,就需要在這個(gè)函數(shù)中寫上相應(yīng)的跳轉(zhuǎn)代碼。 綜上,javascript實(shí)現(xiàn)分頁功能不僅簡單、方便,而且可以實(shí)現(xiàn)非常靈活的分頁效果,也可以結(jié)合各類插件來實(shí)現(xiàn)更加高級(jí)的分頁需求。希望本文能夠?qū)Υ蠹矣兴鶐椭?/div>" + pageCount + ""; //如果結(jié)束頁碼小于總頁數(shù)減1,就添加省略號(hào)和最后一頁鏈接 } if(endPage 下一頁"; //如果結(jié)束頁碼小于總頁數(shù),就添加下一頁按鈕 } return strPage; //返回生成的頁碼HTML代碼 }