/************************************
/***** 定长分页 *****
/************************************
/*
Author: igyhi
Date: 2007.03.23
address: 二区 月光林地 沙恩霍斯特
info: 凸o_O凸
--转载使用请保留该信息--
*/
/*
*分页类
*tag:要显示分页条的HTML元素
*pageCount:总页数
*pageHalf:显示容量
*objName:构造的对象名称
*link:分页数字url链接
*argsarr:链接参数数组
*说明:声明为一个类是由于一个页面可能使用多个分页条,使用时构造一个分页对象就可以
* 显示容量 eg. =2时 1 2...3 4 5 6 7...24 25 =3时 1 2...3 4 5 6 7 8 9...24 25
* 构造对象名称是指实例化的对象,把其引用名称回传到方法里 eg. var pv=new PageView('viewpagev',40,4,'pv','pic.jsp',arr);
* 分页数字url链接是指点击分页数字所链接到的目标
* argsarr是指链接到新目标时,所携带的参数
*/
function PageView(t,pc,ph,on,l,arr)
{
this.tag=t;
this.pageCount=pc;
this.pageHalf=ph;
this.objName=on;
this.link=l;
this.argsarr=arr;
}
/*
*参数数组解析函数
*arr:传入的参数数组
*/
PageView.prototype.addArgsToLink=function(arr)
{
var str='?';
for(var n in arr)
{
str+=n+'='+encodeURI(arr[n])+'&';
}
return str;
}
/*
*分页条显示函数
*pageTarget:目标页号
*/
PageView.prototype.viewpage=function(pageTarget)
{
/*页号记录数组,纯页号数字int*/
var page_arr;
/*页号显示数组,含HTML元素的页号串String*/
var page_arr_view;
/*页号串,回显到HTML页面*/
var pstr="<a href='javascript:"+this.objName+".view(1)'>首页</a>";
var pstrbefore="<tt><a href='javascript:"+this.objName+".view("+(pageTarget-1)+")'>上一页</a></tt>";
var pstrafter="<tt><a href='javascript:"+this.objName+".view("+(pageTarget+1)+")'>下一页</a></tt>";
var pstrend="<a href='javascript:"+this.objName+".view("+(this.pageCount)+")'>末页</a>";
/*
*初始化页号数组函数
*注意链接元素<a>后的空格,适应样式
*函数嵌套时,注意自身对象的传递 os
*/
function publicrun(os)
{
page_arr=new Array();
for(i=0;i<os.pageCount;i++)
{
page_arr[i]=i+1;
}
page_arr_view=page_arr.slice();
for(i=0;i<os.pageCount;i++)
{
page_arr_view[i]=" <a href='javascript:"+os.objName+".view("+page_arr_view[i]+")'>["+page_arr_view[i]+"]</a> ";
}
page_arr_view[pageTarget-1]=" <a href='javascript:"+os.objName+".view("+page_arr[pageTarget-1]+")'><label class='gpage'>"+page_arr[pageTarget-1]+"</label></a> ";
}
/*
*页号形成逻辑,拼接方式
*/
if(this.pageHalf*2+3>=this.pageCount)
{
publicrun(this);
for(i=0;i<this.pageCount;i++)
{
pstr+=page_arr_view[i];
}
return pstr+pstrend;
}
if(pageTarget-this.pageHalf<2)
{
publicrun(this);
for(i=0;i<this.pageHalf*2+1;i++)
{
pstr+=page_arr_view[i];
}
return pstr+pstrafter+pstrend;
}
if(pageTarget-this.pageHalf>=2 && pageTarget+this.pageHalf+1<=this.pageCount)
{
publicrun(this);
pstr+=pstrbefore;
for(i=pageTarget-this.pageHalf;i<(pageTarget-this.pageHalf)+(this.pageHalf*2+1);i++)
{
pstr+=page_arr_view[i-1];
}
return pstr+pstrafter+pstrend;
}
if(pageTarget+this.pageHalf+1>this.pageCount)
{
publicrun(this);
pstr+=pstrbefore;
for(i=0;i<this.pageHalf*2+1;i++)
{
pstr+=page_arr_view[this.pageCount-(this.pageHalf*2+1)+i];
}
return pstr+pstrend;
}
}
/*
*页面初始化分页条函数
*pageTarget:目标页号
*说明:应用在<body> onload函数中,要判断当前页号request.getParameter("pagenum")
* 如果返回为空表示第一次进入该页面,pageTarget置1,否则pageTarget置返回值
* eg. pv.pageinit(request.getParameter("pagenum")==null?1:request.getParameter("pagenum"));
*/
PageView.prototype.pageinit=function(pageTarget)
{
var e=document.getElementById(this.tag);
e.innerHTML=this.viewpage(pageTarget);
}
/*
*分页条触发函数
*pageTarget:目标页号
*说明:该函数负责跳转,并且有触发跳转前后的函数处理接口
* PageViewCallBackBefore 是跳转前的回调函数,可以在跳转前做一些其他工作
* PageViewCallBackAfter 是跳转后的回调函数,可以在跳转后做一些其他工作
* 以上两回调函数可以不实现
*/
PageView.prototype.view=function(pageTarget)
{
//编码encodeURI(String args);
//解码decodeURI(String args);
if(typeof(PageViewCallBackBefore)=='function')PageViewCallBackBefore(this);
location.href=this.link+this.addArgsToLink(this.argsarr)+'pagenum='+pageTarget;
if(typeof(PageViewCallBackAfter)=='function')PageViewCallBackAfter(this);
}/*应用样例
全局声明:var pv=new PageView('viewpagev',10,2,'pv','pic.jsp','');
onload函数中:pv.pageinit(<%=request.getParameter("pagenum")==null?1:request.getParameter("pagenum")%>);
*/
/***** 定长分页 *****
/************************************
/*
Author: igyhi
Date: 2007.03.23
address: 二区 月光林地 沙恩霍斯特
info: 凸o_O凸
--转载使用请保留该信息--
*/
/*
*分页类
*tag:要显示分页条的HTML元素
*pageCount:总页数
*pageHalf:显示容量
*objName:构造的对象名称
*link:分页数字url链接
*argsarr:链接参数数组
*说明:声明为一个类是由于一个页面可能使用多个分页条,使用时构造一个分页对象就可以
* 显示容量 eg. =2时 1 2...3 4 5 6 7...24 25 =3时 1 2...3 4 5 6 7 8 9...24 25
* 构造对象名称是指实例化的对象,把其引用名称回传到方法里 eg. var pv=new PageView('viewpagev',40,4,'pv','pic.jsp',arr);
* 分页数字url链接是指点击分页数字所链接到的目标
* argsarr是指链接到新目标时,所携带的参数
*/
function PageView(t,pc,ph,on,l,arr)
{
this.tag=t;
this.pageCount=pc;
this.pageHalf=ph;
this.objName=on;
this.link=l;
this.argsarr=arr;
}
/*
*参数数组解析函数
*arr:传入的参数数组
*/
PageView.prototype.addArgsToLink=function(arr)
{
var str='?';
for(var n in arr)
{
str+=n+'='+encodeURI(arr[n])+'&';
}
return str;
}
/*
*分页条显示函数
*pageTarget:目标页号
*/
PageView.prototype.viewpage=function(pageTarget)
{
/*页号记录数组,纯页号数字int*/
var page_arr;
/*页号显示数组,含HTML元素的页号串String*/
var page_arr_view;
/*页号串,回显到HTML页面*/
var pstr="<a href='javascript:"+this.objName+".view(1)'>首页</a>";
var pstrbefore="<tt><a href='javascript:"+this.objName+".view("+(pageTarget-1)+")'>上一页</a></tt>";
var pstrafter="<tt><a href='javascript:"+this.objName+".view("+(pageTarget+1)+")'>下一页</a></tt>";
var pstrend="<a href='javascript:"+this.objName+".view("+(this.pageCount)+")'>末页</a>";
/*
*初始化页号数组函数
*注意链接元素<a>后的空格,适应样式
*函数嵌套时,注意自身对象的传递 os
*/
function publicrun(os)
{
page_arr=new Array();
for(i=0;i<os.pageCount;i++)
{
page_arr[i]=i+1;
}
page_arr_view=page_arr.slice();
for(i=0;i<os.pageCount;i++)
{
page_arr_view[i]=" <a href='javascript:"+os.objName+".view("+page_arr_view[i]+")'>["+page_arr_view[i]+"]</a> ";
}
page_arr_view[pageTarget-1]=" <a href='javascript:"+os.objName+".view("+page_arr[pageTarget-1]+")'><label class='gpage'>"+page_arr[pageTarget-1]+"</label></a> ";
}
/*
*页号形成逻辑,拼接方式
*/
if(this.pageHalf*2+3>=this.pageCount)
{
publicrun(this);
for(i=0;i<this.pageCount;i++)
{
pstr+=page_arr_view[i];
}
return pstr+pstrend;
}
if(pageTarget-this.pageHalf<2)
{
publicrun(this);
for(i=0;i<this.pageHalf*2+1;i++)
{
pstr+=page_arr_view[i];
}
return pstr+pstrafter+pstrend;
}
if(pageTarget-this.pageHalf>=2 && pageTarget+this.pageHalf+1<=this.pageCount)
{
publicrun(this);
pstr+=pstrbefore;
for(i=pageTarget-this.pageHalf;i<(pageTarget-this.pageHalf)+(this.pageHalf*2+1);i++)
{
pstr+=page_arr_view[i-1];
}
return pstr+pstrafter+pstrend;
}
if(pageTarget+this.pageHalf+1>this.pageCount)
{
publicrun(this);
pstr+=pstrbefore;
for(i=0;i<this.pageHalf*2+1;i++)
{
pstr+=page_arr_view[this.pageCount-(this.pageHalf*2+1)+i];
}
return pstr+pstrend;
}
}
/*
*页面初始化分页条函数
*pageTarget:目标页号
*说明:应用在<body> onload函数中,要判断当前页号request.getParameter("pagenum")
* 如果返回为空表示第一次进入该页面,pageTarget置1,否则pageTarget置返回值
* eg. pv.pageinit(request.getParameter("pagenum")==null?1:request.getParameter("pagenum"));
*/
PageView.prototype.pageinit=function(pageTarget)
{
var e=document.getElementById(this.tag);
e.innerHTML=this.viewpage(pageTarget);
}
/*
*分页条触发函数
*pageTarget:目标页号
*说明:该函数负责跳转,并且有触发跳转前后的函数处理接口
* PageViewCallBackBefore 是跳转前的回调函数,可以在跳转前做一些其他工作
* PageViewCallBackAfter 是跳转后的回调函数,可以在跳转后做一些其他工作
* 以上两回调函数可以不实现
*/
PageView.prototype.view=function(pageTarget)
{
//编码encodeURI(String args);
//解码decodeURI(String args);
if(typeof(PageViewCallBackBefore)=='function')PageViewCallBackBefore(this);
location.href=this.link+this.addArgsToLink(this.argsarr)+'pagenum='+pageTarget;
if(typeof(PageViewCallBackAfter)=='function')PageViewCallBackAfter(this);
}/*应用样例
全局声明:var pv=new PageView('viewpagev',10,2,'pv','pic.jsp','');
onload函数中:pv.pageinit(<%=request.getParameter("pagenum")==null?1:request.getParameter("pagenum")%>);
*/
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货