假如这个世界上只剩下你一个人,当你正坐在屋子里的时候,这时突然响起了敲门声...

用javascript实现较为通用的客户端分页组件

上一篇 / 下一篇  2008-05-05 20:46:48

查看( 22 ) / 评论( 0 )
1、测试页面
+UQ#u6o7H!D}0 <html>ITPUB个人空间(e;Lwol5V!\g
<head>
$FyO9xU*j0 <script src="pageSystem.js"></script>ITPUB个人空间2@F o9UZE[
<script>ITPUB个人空间-~EnI~|
   var psys;ITPUB个人空间E:m2n4?3f M{ |
   window.onload = function() {ITPUB个人空间-]~L;U3P+tr sv
    psys = new PageSystem(1120, "pageDiv", 10, showMsg); //总记录数, 分页系统容器,每组10页,回调ITPUB个人空间Y,[+Y)F$mhfZ"R4I
    psys.init();ITPUB个人空间8EOb4kr/[W,U
  }
8pywV3FOr k([Qm:K0 ITPUB个人空间b-]&bTh1p1Vh&E(G9PC
  function showMsg(currentPage, pageSize) {
pkKoZ(\@OZ0     //回调方法自定义,两个参数,第一个为当前页,第二个为每页记录数
5Am;Ol9p*R0     /****************将currentPage和pageSize请求数据更新列表,最好使用ajax技术******************/ITPUB个人空间#@F9Y8@$s0k'O
    alert("请求数据要的相应参数>> currentPage: "+ currentPage + " pageSize: " + pageSize);
r n |p v7I:j%}"Y4ss0   }ITPUB个人空间9Pp"{Jz
  ITPUB个人空间1Y2e|S*g v3g
   /*****如果要更新分页系统请如下操作******/ITPUB个人空间1D5a/jj~ b
    //psys.update(count); //@count 为记录总数ITPUB个人空间W _L-H_0C$s
    function updatePageSys() {ITPUB个人空间/D2IM w K
   
)bSRPU8H0      psys.update(150); //@count 为记录总数ITPUB个人空间l4t.T i.oP
   }
)Xg;\E5S3t!eK7}4m-m0   </script>ITPUB个人空间L5z e:X6?-GJ!G},{
  <style>ITPUB个人空间t3^{+I;h ?\mp g
    #pageDiv{ITPUB个人空间vE Y4\5Lt!d` Nm
      font-size:13px;
B0re)G5k?0     }
?@-qzt4k0   </style>ITPUB个人空间s4hR WznYo
</head>ITPUB个人空间g1s7Eh)_^w2W Z!U
<body>
FTPe!]mO0   <div id="pageDiv">ITPUB个人空间 gI wE}!X!Kh)J
  </div>
p@`HU%QS0   <br/><br/>ITPUB个人空间 \WDSLL'U
  <a href="#" onclick="updatePageSys();"/>更新分页系统</a>ITPUB个人空间q|/\%e?2?)E9\"kim
</body>ITPUB个人空间$hc5M JY$zr[7W
</html>ITPUB个人空间Xjx7b7VV&W

z/D)l&l:Dy-ec0 2、pageSystem.jsITPUB个人空间LrT\Z@0Eq
function PageSystem(count, divID, grountCount, callBack) {
*Es^JOL'Sm0      this.totolCount = count; //总记录数
`6BxuY&C0      this.initMaxPage = grountCount? grountCount: 5;  //显示页数,如 1 2 3 4 5
}X Om!`*F%h0      this.pageSize = 10;  //每页记录数
:TP_%uD-Ihd O%b`0      this.currentMax = 0; //当前显示的最大页码, 如 1 2 3 4 5; 5为最大页码ITPUB个人空间}hKi&aW
     this.currentMin = 0; //当前显示的最小页码, 如 11 12 13 14 15; 11为最小页码
3m'xI"v[i0      this.homePage = 0; //首页ITPUB个人空间+r$aIyLD4mo1t
     this.endPage = 0; //未页ITPUB个人空间*\Ema$](V-A
     this.currentPage = 0; //当前页ITPUB个人空间]5h/IZm,O2`
     this.currentActiveSpan; //当前活动a容器ITPUB个人空间O S!\8A(SiC
     this.pageDivObj = document.getElementById(divID); //分页系统容器ITPUB个人空间d8Yo"BL&k-@l
     this.pages = 0; //总页数,计算得到
^'o&Y:T2K&l Tk0      //this._url = _url; //提交URL
{J)\cTGY0      this.callBack = callBack; //回调ITPUB个人空间"T*m+LS \I
     var that = this; //指针的引用ITPUB个人空间 i5X1t#_/lY|9e+LL
    ITPUB个人空间JN;a;G~1dA%U n
   
Ys%jdf5y0      this.init = function() {
F1aO+{e%uA0         this.pages = parseInt(this.totolCount / this.pageSize); //获得总共有几页
6|c$ug7w |7a&L!k0         this.pages = this.totolCount % this.pageSize == 0? this.pages: this.pages+1;
;Q0q6FgC n,C0         this.createHomePage();
$e3wm ^;B}9?0         this.createPrePage();ITPUB个人空间PB{4h"Ipgl;T
        var n = 1;
h.DK+p(E/P x0         while(n <= this.pages) {
P)_.U'j P D0           if(n > this.initMaxPage){ITPUB个人空间Z|*KM?KWy5S3AU
             break; //到达最大显示数ITPUB个人空间$f M$Z }~4U3H
          }
$L$u&Z6W0A4p|0           var _span = document.createElement("SPAN");ITPUB个人空间.~9dbJR
          _span.style.cssText = "margin-left:10px";ITPUB个人空间 d8LFqwz
          if(n == 1) { //初始化时第一页为活动页
8gk|*BakGE0             _span.innerText = n;
)V0\!Qn-k&@"X"AY p n P0             this.currentActiveSpan = _span;
V#L;ImuB)x0           }else{
r:qE L3ac0              var _a = document.createElement("A");ITPUB个人空间-\9yqp%Mzu
             _a.href = "#";ITPUB个人空间MbApj{'nn
            _a.onclick = this.reView;
*e+w8E5R5po KWv6Jx0             _a.innerText = n;ITPUB个人空间B JI Xy8Hl$AM
            _span.appendChild(_a);
E~["mH$p}0           }ITPUB个人空间gL h$q/SVjEaD|j
          this.pageDivObj.appendChild(_span);
okd+?)n v8e(Jj0           n++;
)hRv^8N0         }ITPUB个人空间^0C4RVjpm7hFqA7\
        if(this.pages != 0) {
MC:c4~k C't[}0           this.currentMax = n - 1; //当前组最大页码 1 2 3 4 5值为5ITPUB个人空间.Q0@ B7gB@
          this.currentMin = 1; //当前最小页码 1 2 3 4 5 值为1
c)F#c:KM0           this.homePage = 1; //首页
{AvVm0           this.endPage = this.pages; //未页
-JAR{Hd0           this.currentPage = 1; //当前页ITPUB个人空间[aq(V V
        }
)I*lr{ KQ.h6cw0         //alert(this.currentMax);ITPUB个人空间[*_7IeJ^+O+F UXM
        //alert(this.currentMin);ITPUB个人空间 H!g#~F5Q*j
        this.createNextPage();
)MD*{Y*[ P0         this.createEndPage();ITPUB个人空间*AY,dPwn{
      ITPUB个人空间W W(O?oE
      ITPUB个人空间o#zn)Afes
      ITPUB个人空间e2m-c(z YQw?.H&V:p
    };ITPUB个人空间yYr4]1_8}
    this.query = function() {ITPUB个人空间M,b^K1g:KY
      var curPage = that.currentPage; //当前页
V6_~3u[yDq;{ y0       var pageSize = that.pageSize;ITPUB个人空间DM`8q H3[%W!?KG2T
      if(that.callBack) that.callBack(curPage, pageSize);ITPUB个人空间w(K c;i-u
         ITPUB个人空间U\6U9Q _.DE
    };
GI.DU/ZU(C0     this.reView = function() {ITPUB个人空间[9WT,o%@gE#G
     //重新渲染UIITPUB个人空间)o"p(Xcu(d
       that.reViewActivePage();ITPUB个人空间?0xIl&xS5y$S
       that.query();ITPUB个人空间1u;C#p;jRT,C&Ba9Tt
    };ITPUB个人空间W[ V+Zw7P't
    this.reViewActivePage = function() {ITPUB个人空间5@C6u{_]y
      //重新渲染当前页视图
(DNtu#n,`0       var actA = event.srcElement; //当前被点击的 a对象
D'kFz,?)R-\A/A0       var ap = actA.parentNode; //获得当前a容器span对象
c9n U|zVR6g3^3sY0       //还原当前页视图ITPUB个人空间mr)N/ZoE
       var _a = document.createElement("A");
-qO3CH ?"X:W0         _a.href = "#";ITPUB个人空间c9i"[U\%xg3tv
        _a.onclick = this.reView;ITPUB个人空间#t u1Bc$gG
        _a.innerText = that.currentActiveSpan.innerText;
i&jS:w.X!y6Z0         that.currentActiveSpan.innerText = "";
4mz9`8_!p-{"Q/N-j+g+j0         that.currentActiveSpan.appendChild(_a);ITPUB个人空间S7J:A#MPn
       //渲染新的当前页视图
p1DU:c}(zq0        that.currentActiveSpan = ap; //切换当前活动页容器
t ]:} O~k!}0        var curPage = parseInt(actA.innerText);
:m^ [2al0        that.currentActiveSpan.removeChild(actA);
O S&Y%UG8VcA Z*t h5L'|0        that.currentActiveSpan.innerText = curPage;
:q{h0k"z'WzDN0        this.currentPage = curPage; //更改当前页码
']N J-og;c,vp}0        if(!that.toNextGroup()) that.toPreGroup();ITPUB个人空间uLVK] u7eR
    };
zhen![/u${*o0     this.toNextGroup = function() {
;F_~dQP1n0        //重新渲染显示页下一组 1 2 3 4 5 --> 5 6 7 8 9
pMH/T"q(RN,ik0        if(that.currentPage == that.currentMax) {//点击的页码为当前组最大页码,当go 下一组
:U5o(LA|I1L0          if(that.currentPage != that.endPage) { //如果点了未页当然不会再有下一组啦!ITPUB个人空间0L%C0V4yQ?1I N
            that.pageDivObj.innerHTML = ""; //@1
?iz%d;dUa0R0             var pageCode = parseInt(that.currentPage) + 1; //显示页码
#Fr zebels0             var n = 2; //当前活动页不重创ITPUB个人空间lN{"wv7rev6iM
            this.createHomePage();ITPUB个人空间*clc9p4gpw
            this.createPrePage();ITPUB个人空间*@q`!wt,W
            that.currentActiveSpan.innerText = that.currentPage;ITPUB个人空间rNLHgADb4G8K
            that.pageDivObj.appendChild(that.currentActiveSpan); //将当前活动页回放,请看@1
KP Ri[OQ0             while(pageCode <= that.pages) {ITPUB个人空间u0~'@(dF/LY
            if(n > that.initMaxPage){
+lJ9L%b"WO'kZ0                break; //到达最大显示数
$sNJ7~['U1Jd W Ux0             }
3K6F&`V-^~.k(a0             var _span = document.createElement("SPAN");ITPUB个人空间;L(tA'}D'n;@KH#v
            _span.style.cssText = "margin-left:10px";ITPUB个人空间w2|^F{$X4[(fu
            var _a = document.createElement("A");ITPUB个人空间 @`6n7U"Eb)yK
             _a.href = "#";ITPUB个人空间#|t A;B)ED#o
            _a.onclick = that.reView;ITPUB个人空间 QL]] Nd9V^o
            _a.innerText = pageCode;ITPUB个人空间[9oe6|4T
            _span.appendChild(_a);
l#?_*XAB)E0             that.pageDivObj.appendChild(_span);
C;M_-O1C?I)S'x,R0             pageCode++;
#q0@a |L%u0             n++;ITPUB个人空间E9S&q5gE
          }ITPUB个人空间K%SvS-YV;a,F3`+B"i
          that.currentMax = pageCode - 1;
U]j,y r m0           that.currentMin = that.currentPage;ITPUB个人空间za} J^S{1e;]7ZE
         // alert("currentMax: " + that.currentMax);ITPUB个人空间/x2f$|FS4S
         // alert("currentMin: " + that.currentMin);ITPUB个人空间%m0Ai!j T@[
          this.createNextPage();
5N4}H |O6k0           that.createEndPage();
/qD5d:D3N0           return true;
OR}gy hE0          }//end if
E0Wp-qKz,v6SV0        }//end if
Y:| k.K/m0        return false;
g,E4rIdAW6DXo/{0     };ITPUB个人空间c*] x]Y9M t;v
    this.toPreGroup = function() { //ITPUB个人空间7nE2pZ7B+w$}
      //重新渲染显示页上一组 5 6 7 8 9 -->1 2 3 4 5ITPUB个人空间#rPB v,@%P7H
      if(that.currentPage == that.currentMin) { //点了组中最小页码ITPUB个人空间hi(io'd-P:J Z$tdD8f
        if(that.currentPage != 1) {
:BQ \J q"@0            that.pageDivObj.innerHTML = ""; //@2ITPUB个人空间rbb9Wv5_(Th9o3b ^:A*A f
            var pageCode = parseInt(that.currentPage) - (that.initMaxPage -1); //显示页码ITPUB个人空间ykN'f#`{woUN
            var n = 2; //当前活动页不重创ITPUB个人空间4fs8h-Y d
            this.createHomePage();
S"?+C%[:fP`&i0             this.createPrePage();ITPUB个人空间$C zj1IHg0{o
            while(true) {
DeU [ sn [0             if(n > that.initMaxPage){
-djaM.t/M0                break; //到达最大显示数
i{ vf,T:C1I\H0             }
N5jy6mZik@4S6D,~0             var _span = document.createElement("SPAN");ITPUB个人空间cb2n.I(J-FZ:hW
            _span.style.cssText = "margin-left:10px";
+D.r8u(v[}p0             var _a = document.createElement("A");ITPUB个人空间%C7E,W4^#{_
             _a.href = "#";
@&t!?Y1S"rv|{4t0             _a.onclick = that.reView;
l#THX^-J L4VQ0             _a.innerText = pageCode++;ITPUB个人空间V LK3q+a,`6H
            _span.appendChild(_a);
,\8wF7M!? [6J0             that.pageDivObj.appendChild(_span);
S`3d^n?7^h0             n++;ITPUB个人空间"~Y![^*wH
          }
PIQeq)] e m0           that.currentMax = that.currentPage;
O'B:[`q0           that.currentMin = pageCode - (that.initMaxPage -1);ITPUB个人空间-~JV J9M
          //alert("currentMax: " + that.currentMax);
6[0z%{9W'p#y0          // alert("currentMin" + that.currentMin);
!~)?n4k/l0           that.currentActiveSpan.innerText = that.currentPage;
^:q-q#]|/V-\h0             that.pageDivObj.appendChild(that.currentActiveSpan); //将当前活动页回放,请看@2ITPUB个人空间1v ?"f\7h%H4|zX Y2o
            that.createNextPage();
R4KP[{\fAd9Z*Ld0             that.createEndPage();ITPUB个人空间C7O FU;C3Re
        }//end ifITPUB个人空间_9w'\#Hpj
      }//end ifITPUB个人空间,It No2j)g2k@[
    };
YKtx@1MW{0e!^0      this.toHomePage = function(){
f MR/J5`d0        //去到首页
z9_&}Q9}2NS Vn P8s]0        if(that.pages == 0) return;ITPUB个人空间BP)i!hf8o|
       if(that.currentPage != 1) {//切组ITPUB个人空间8[:j5|vX w^ D1@0L
         that.pageDivObj.innerHTML = "";
0b)W:ki&W)@3u0          that.init();
o_)qfmsP0        }//end ifITPUB个人空间oC$zTk/N:V1o
       that.currentPage = 1;
] a0M ~bq3H{0        that.currentMin = 1;
P3M)}]zy _0        that.currentMax = that.initMaxPage;ITPUB个人空间n5G3z&f"^1W
       that.query();ITPUB个人空间S9A#iPHEc~8H[
     };
w[ j-{ a,]Y v0      this.toEndPage = function() {
*T-I9QY b,sw+`)M0        //去到未页ITPUB个人空间_dsby$P%x"fc
        if(that.pages == 0 ||that.currentPage == that.pages) return;
:R@7B@7k#n,F.T0         if(true) {//切组条件修改,此条件作废,临时设为true
Tbg I@6T hL0         that.pageDivObj.innerHTML = "";
!h[#f8^)NEc0         that.createHomePage();
'F!N)j(|/GmR0         that.createPrePage();ITPUB个人空间p^9[ c*w+I
        var pageCode = 1;ITPUB个人空间#\#v)gG:k+\} Qs
     var n = 1;
%?$Hf y'~4s_s0y0       while(pageCode <= that.pages) {ITPUB个人空间 D|C'{MDlh8q"X
        if(n > that.initMaxPage-1){ITPUB个人空间kd?!Ow~CZ Z
          n = 1;
Hx5O(u] J _S0         }ITPUB个人空间2T h l$N5d5i
        n++;ITPUB个人空间 n`\vd5b?
        pageCode++;
9sM icc@f0       }ITPUB个人空间 \$`&n9U1f
     
$w8~7j8JU b7V0       pageCode = that.pages - (n-2);ITPUB个人空间(Fvrk(GNo"Q
      for(var j = 1; j < n; j++) {ITPUB个人空间Yf2Hz#{tO;?Z
         var _span = document.createElement("SPAN");
,s \_2Ub5u8?%nB0        _span.style.cssText = "margin-left:10px";ITPUB个人空间|H)_"X%R9x [,F vfzR
       if(pageCode == that.pages) { //初始化时第一页为活动页ITPUB个人空间O"bsy1x#wE
        _span.innerText = pageCode;ITPUB个人空间t-M4? mp2[{
        that.currentActiveSpan = _span;ITPUB个人空间Ks:hZ(pF6YtZL
       }else{
\7O m9F1l/a ``0          var _a = document.createElement("A");
2_&K,os%A2HYe0          _a.href = "#";
VG%q%N+Iv3`o ~ p,Y0          _a.onclick = that.reView;ITPUB个人空间[$F7w4DQ)_ip
         _a.innerText = pageCode;ITPUB个人空间sb.`5s({+X_
         _span.appendChild(_a);ITPUB个人空间s;AVOf/`]
         pageCode++;ITPUB个人空间RJ[2l)Q6I m
       }ITPUB个人空间"E2qj'U_ NYy FG!wGx
       that.pageDivObj.appendChild(_span);ITPUB个人空间EV,_+RA)BT
      }
[Xk8p:z)d(CU0       
m O%Z? P.I[~ H0          that.createNextPage();ITPUB个人空间Nm!t8K]
          that.createEndPage();ITPUB个人空间5jBk)_"[ Ov
       }//end if
F9q#J#z.IGcL0        that.currentPage = that.pages;ITPUB个人空间` L4Rg.DdJ
       that.currentMin = that.pages - (n-2);
6I:j9vu(x\)~0        that.currentMax = that.pages;ITPUB个人空间3?hs4Nh f
      // alert("currentMin: " + that.currentMin);ITPUB个人空间[b%Sz5A \D4m
       //alert("currentMax: " + that.currentMax);ITPUB个人空间x zS2w!o.R(Ma9U
      // alert("pages: " + that.pages);
%A}5T,??0        that.query();ITPUB个人空间,Mwf^'SGv+Y
     };
%y1BX1q)M#b0     ITPUB个人空间!gRc j9\
     this.next = function() {ITPUB个人空间]:?i&Ov0vb
       //下一页
9q){@*Ah\G1TG0      };ITPUB个人空间0k%iU)\$ss,\
     this.pre = function() {ITPUB个人空间0gT;ovw5h8z|o o
       //上一页ITPUB个人空间-D-qzC-KQq$@
     };
7@$^C;?a4l0      this.update = function(count) {ITPUB个人空间Q\9[ b"A B
       //更新分页系统ITPUB个人空间7U ^fa5Wov
       this.totolCount = count;
KV)pXG YX0        that.pageDivObj.innerHTML = "";
m+r0}V9d};t^ WL0        this.init();ITPUB个人空间9jL~^+v6c
     };
,n&Y{ \5`}\rc^e0      this.createPrePage = function() {
R kLWc1a)rI)w0        return;ITPUB个人空间S0F/EEMLS
       var _span = document.createElement("SPAN");
/|`|)?a,jm\n[(h0        _span.style.cssText = "margin-left:16px";ITPUB个人空间 ` |[ z mqS
       var _a = document.createElement("A");
"i[pp SPM5f.m0        _a.href = "#";
|/I WX(a@]yb0        _a.onclick = this.pre;
1Q3^ dt(D1b3q0        _a.innerText = "上一页";
}S!ldx0        _span.appendChild(_a);ITPUB个人空间;@`XEkg$Ma(o
       this.pageDivObj.appendChild(_span);ITPUB个人空间+~*T,AHf;WX.\
     };
r5pNd*Z3\0      this.createNextPage = function() {
[(NLp(fB7]0        return;ITPUB个人空间x]k'e m Y2c
       var _span = document.createElement("SPAN");
c/lf5]6J8w F0        _span.style.cssText = "margin-left:16px";ITPUB个人空间.w@^ { ^5z
       var _a = document.createElement("A");
w:O5KV#q Q#Fli0        _a.href = "#";
A!Ds;u[K7?(s0        _a.onclick = this.next;
H$q[$E!o3A0        _a.innerText = "下一页";
`p7AJ3yo?0        _span.appendChild(_a);
#vmoa un$Vm0        this.pageDivObj.appendChild(_span);ITPUB个人空间.ESQtY
     };ITPUB个人空间?}D5a$a+F'?
     this.createHomePage = function() {
9o$x1pn*|t1f0        var homeSpan = document.createElement("SPAN");ITPUB个人空间6J0Sfi*}`-f @
       var _a = document.createElement("A");ITPUB个人空间G;o s!IO
       _a.href = "#";ITPUB个人空间J+R!u|z'y%x ^C
       _a.onclick = this.toHomePage;
-M)m ~j'oz8D/H7c {0        _a.innerText = "首页";ITPUB个人空间*^E/Rq u K(v2i
       homeSpan.appendChild(_a);ITPUB个人空间T7C-Y D*Ii
       this.pageDivObj.appendChild(homeSpan);ITPUB个人空间 B O!w%`.o*f L\
     };
QN,Z LI0      this.createEndPage = function() {
Kv$G,H9J${(bg*}Y0        var _span = document.createElement("SPAN");ITPUB个人空间GJ"mA8m hO!k
       _span.style.cssText = "margin-left:16px";
@ MSi8uzA+n0        var _a = document.createElement("A");
m`6\ |S5fn&sx ?/t+q-H0        _a.href = "#";ITPUB个人空间k)~9]*k*?L
       _a.onclick = this.toEndPage;
/q5iA4_#hU0        _a.innerText = "未页(" + this.pages +")";ITPUB个人空间,t w].fx{vl
       _span.appendChild(_a);
gWHs |9V7B/C0        this.pageDivObj.appendChild(_span);ITPUB个人空间|Dppub1F
     }ITPUB个人空间\UnkCd
   }

TAG:

我来说两句

(可选)

日历

« 2008-05-17  
    123
45678910
11121314151617
18192021222324
25262728293031

数据统计

  • 访问量: 3859
  • 日志数: 83
  • 建立时间: 2008-02-08
  • 更新时间: 2008-04-25

RSS订阅

Open Toolbar