前幾天有朋友問給定一個數,用它來構造一個2維數組,當時想用它來在頁面管理頁碼倒不錯!按寧增勿改的原則:
1:在原JS代碼中加幾個了全域變數,最終的全域變數列表為:
<script type="text/javascript">...
//<![CDATA[
var globalLink;
var pageArray;
var currentPage;
var totalPage;
原來的兩個函數不變,再加幾個函數:
function pageStruct(paran,e){
var one=0;
var two=0;
var page=new Array();
if(param.length==0){
alert("error");
}else{
totalPage=param;
page[one]=new Array();
for(var i=0;i<param;i++){
page[one][two]=i+1;
two++;
if(two==5) two=0;
if((i+1)/5>=1 && (i+1)%5==0){
one++;
page[one]=new Array();
}
}
}
pageArray=page;
currentPage=e;
if(currentPage<=0 || currentPage==undefined) currentPage=1;
pagePanel(findPageArray());
}
該函數的作用:
a,用param參數構造一個2維數組,並把該數組賦給全域變數:pageArray;
b,用e參數給全域變數:currentPage賦值
c,列印頁面面板
看另一個函數:
function findPageArray(){
var tempParam;
for(var i=0;i<pageArray.length;i++){
for(var j=0;j<pageArray[i].length;j++){
if(pageArray[i][j]==currentPage){
tempParam=i;
break;
}
}
}
return tempParam;
}
該函數的作用:
a.用currentPage來定位2維數組
最後一個函數:
function pagePanel(param){
if(param.length==0 || param<=0) param=0;
var tempPrev=currentPage-1;
if(tempPrev<=0) tempPrev=1;
var tempNext=currentPage+1;
if(tempNext>=totalPage) totalNext=totalPage;
var lastPos=pageArray[param].length-1;
pageLink="<dl><dt>Results Page:</dt>";
pageLink=pageLink+"<dd><a href='javascript:window.location.replace(getRequestPageNumber("+pageArray[param][0]+"));'>Index</a></dd>";
pageLink=pageLink+"<dd><a href='javascript:window.location.replace(getRequestPageNumber("+tempPrev+"));'>Prev</a></dd>";
for(var i=0;i<pageArray[param].length;i++){
pageLink=pageLink+"<dd><a href='javascript:window.location.replace(getRequestPageNumber("+pageArray[param][i]+"));'>"+pageArray[param][i]+"</a></dd>";
}
pageLink=pageLink+"<dd><a href='javascript:window.location.replace(getRequestPageNumber("+tempNext+"));'>Next</a></dd>";
pageLink=pageLink+"<dd><a href='javascript:window.location.replace(getRequestPageNumber("+pageArray[param][lastPos]+"));'>Last</a></dd></dl>";
document.getElementById("pagelist").innerHTML=pageLink;
}
該函數的作用:
a.用findPageArray函數返回的數數組作引元列印頁面面板
最後網頁的改動為:
<div id="pagepanel">
<label id="pagelist"></label>
<script type="text/javascript" language="javascript">...pageStruct(<%=p.getTotalPages()%>,<%=p.getCurrentPage() %>)</script>
<p><%=p.getCurrentPage() %>/<%=p.getTotalPages() %></p>
</div>
其實用單例的模式把JS重構為物件導向的寫法更好!可以避免重複的在頁面構造2維數組