我想在JavaScript中創建分頁,類似於現在看到的大多數分頁,如果有很多頁面,它將使用點來分解頁面顯示。 (1 2 ... 22 23 24 25 27 28 ... 110 111)分頁與中檔頁碼
這是我到目前爲止的代碼,但這是行不通的。我只顯示當前頁面。任何想法,我在這裏失蹤?
僅供參考 - 您會發現我使用_.range()
,這是來自Underscore.js和$.inArray()
,這是來自jQuery。
您還會注意到我有iPage
,默認情況下我的分頁從0開始(page
是當前頁面索引),所以我只是爲了這個顯示而添加1 - 我已經嘗試兩種方式,我得到同樣的問題。
非常感謝您的幫助!
編輯:我剛剛在下面添加了一個else語句,現在它顯示(1 2 3 21),21是最後一頁,1是我正在瀏覽的頁面。
var midRange = 7;
var paging = '';
var iPage = page + 1;
if(totalPages > 10) {
var startRange = iPage - Math.floor(midRange/2);
var endRange = page + Math.floor(midRange/2);
if(startRange <= 0) {
endRange += Math.abs(startRange + 1);
startRange = 1;
}
if(endRange > totalPages) {
startRange -= (endRange - totalPages);
endRange = totalPages;
}
var range = _.range(startRange, endRange);
for(i = 1; i <= totalPages; i++) {
if(range[0] > 2 && i == range[0]) {
paging += ' ... ';
console.log(paging);
}
inArray = $.inArray(i, range);
if (inArray > -1)
isInArray = true;
else
isInArray = false;
if(i == 0 || i == totalPages || isInArray) {
if(i == iPage) {
paging += '<a href="#"><b>'+i+'</b></a>';
console.log(paging);
} else {
paging += '<a href="#">'+i+'</a>';
}
}
if(range[midRange-1] < totalPages && i == range[midRange-1]) {
paging += ' ... ';
console.log(paging);
}
}
} else {
for(i = 1; i <= totalPages; i++) {
if(i == iPage) {
paging += '<a href="#"><b>'+i+'</b></a>';
console.log(paging);
} else {
paging += '<a href="#">'+i+'</a>';
console.log(paging);
}
}
}