Javascript實現的分頁函數
2024-09-06 12:44:13
供稿:網友
From: IECN.Net ; Author: 鐘鐘
/**
* 分頁類構造
* 參數 nTotalList: 總條數
* 參數 nPageSize: 每頁顯示條數
* 參數 nPageNum: 當前頁碼
* 參數 sPageUrl: 分頁鏈接的URL,頁碼以[pn]代替,輸出時將被替換為實際頁碼
* 參數 nPageListSize: 頁碼列表(下拉框)中顯示的最多頁碼條數。該參數可省略,默認100
*/
function Pagination(nTotalList, nPageSize, nPageNum, sPageUrl, nPageListSize) {
this.totalList = nTotalList;
this.pageSize = nPageSize;
this.pageNum = nPageNum;
if (nTotalList == 0)
this.totalPages = 1;
else
this.totalPages = Math.floor((this.totalList-1)/this.pageSize + 1);
this.pageUrl = sPageUrl;
if (arguments[4])
this.pageListSize = nPageListSize;
else
this.pageListSize = 100;
}
/**
* 生成分頁,將HTML直接輸出
* 無參數
* 無返回值
*/
Pagination.prototype.generate = function() {
var output = "";
output += "<table width=/"98%/" cellspacing=/"1/" cellpadding=/"3/" align=/"center/"><tr><td align=/"right/">";
output += "共 " + this.totalList + " 條 每頁 " + this.pageSize + " 條 當前第 ";
output += "<select onchange=/"if(this.value)location.href='" + this.pageUrl + "'.replace(///[pn//]/,";
output += "this.value);/" align=/"absMiddle/" style=/"font:normal 9px Verdana,Arial,宋體;/">";
var firstPage = this.pageNum - Math.floor(this.pageListSize/2);
if (firstPage < 1)
firstPage = 1;
var lastPage = firstPage + this.pageListSize - 1;
if (lastPage > this.totalPages) {
lastPage = this.totalPages;
firstPage = lastPage - this.pageListSize + 1;
if (firstPage < 1)
firstPage = 1;
}
if (firstPage > 1) {
output += "<option value=/"1/">1</option>";