WEB前端组件思想【分页】

DEMO1:

 

 很早就想写一些功能性的组件,无奈技术有限一点一点的边工作,边学。

近日工作中用到分页功能,当然由于加快业务进度,第一选择肯定是选择插件,但是实用性来说,还是有那么一点不适合。毕竟插件是通用的。

经过几日加班后回家再熬夜学习。稍有收获。

从最简单的写起:

  1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta charset="UTF-8">
  5         <title></title>
  6         <style type="text/css">
  7             a{
  8                 margin: 6px;
  9             }
 10         </style>
 11         <script type="text/javascript">
 12         //接之前的逻辑判断  如果 nownum 1了怎么办  变2了  最前也变成 -1 0
 13         //必须再加判断
 14         
 15               window.onload = function()
 16               {
 17                    page({
 18                        id:"div1",
 19                        nowNum:5,
 20                        allNum:10,
 21                        callback:function(now,all){
 22                            alert("当前页"+now+"总共页"+all)
 23                        }
 24                    })
 25                    function page(opt)
 26                    {
 27                        if(!opt.id){
 28                            return false;
 29                        }
 30                        var obj = document.getElementById(opt.id);
 31                        var nowNum = opt.nowNum || 1;
 32                        var allNum = opt.allNum ||5;
 33                        //必须判断回调是否存在;
 34                        var callback= opt.callback || function(){};
 35                        //写首页  上一页 大于6才能从中间开始向2边扩散
 36                        if (nowNum >4 && allNum >=6) {
 37                            var oA = document.createElement("a");
 38                            oA.href = "#"+1;
 39                            oA.innerHTML= "首页";
 40                            obj.appendChild(oA);
 41                        }
 42                        //上一页  大于等于2
 43                            if (nowNum >=2 ) {
 44                            var oA = document.createElement("a");
 45                            oA.href = "#"+(nowNum-1);
 46                            oA.innerHTML= "上一页";
 47                            obj.appendChild(oA);
 48                        }
 49                        
 50                        
 51                        if ( allNum<=5) {
 52                            for (var i=1;i<=allNum;i++) {
 53                                var oA = document.createElement("a");
 54                                 oA.href = "#"+i;
 55                                if (nowNum == i) {
 56                                    oA.innerHTML = i;
 57                                }else{
 58                                    oA.innerHTML = "["+i+"]";
 59                                }
 60                                obj.appendChild(oA);
 61                            }
 62                            
 63                        }else{
 64                            for (var i=1;i<=5;i++) {
 65                                var oA = document.createElement("a");
 66                                if(nowNum == 1 || nowNum == 2)
 67                                {
 68                                    oA.href = "#"+i;
 69                                    if(nowNum == i){
 70                                         oA.innerHTML = i;
 71                                    }else{
 72                                          oA.innerHTML = "["+i+"]";
 73                                    }
 74                                    obj.appendChild(oA);
 75                                }  //判断最后2页的值  找准规律   6 7 8 9 10
 76                                else if((allNum - nowNum) ==0 || (allNum - nowNum) ==1){
 77                                    oA.href = "#"+ (allNum-5+i);
 78                                    //重点分析 判断 最后2项  9的时候  10的时候
 79                                    if((allNum - nowNum) ==0 && i ==5 ){
 80                                         oA.innerHTML = (allNum -5 +i);
 81                                    }else if((allNum - nowNum) ==1 && i ==4){
 82                                        oA.innerHTML = (allNum -5 +i);
 83                                    }
 84                                    else{
 85                                          oA.innerHTML = "["+(allNum-5+i)+"]";
 86                                    }
 87                                    obj.appendChild(oA);
 88                                    
 89                                }
 90                                else{
 91                                    oA.href = "#"+ (nowNum-3 + i);
 92                                    if (nowNum == (nowNum-3 + i)) {
 93                                        oA.innerHTML = (nowNum-3 + i);
 94                                    }else{
 95                                        oA.innerHTML = "["+(nowNum-3 + i)+"]";
 96                                    }
 97                                }
 98                                    obj.appendChild(oA);
 99                                
100                            }
101                        }
102                         // 下一页   
103                    if ((allNum-nowNum)>=1) {
104                        var oA = document.createElement("a");
105                            oA.href = "#"+(nowNum+1);
106                            oA.innerHTML= "下一页";
107                            obj.appendChild(oA);
108                    }
109                    //尾页 为什么要大于6   如果只有5张就没必要
110                    if ((allNum-nowNum)>=3 && allNum >=6) {
111                        var oA = document.createElement("a");
112                            oA.href = "#"+ allNum;
113                            oA.innerHTML= "尾页";
114                            obj.appendChild(oA);
115                    }    
116                    callback(nowNum,allNum);
117                        var aA = document.getElementsByTagName("a");
118                        for (var i=0; i<aA.length;i++) {
119                            aA[i].onclick=function(){
120                                //alert(this.getAttribute("href").substring(1));
121                                var nowNum = parseInt(this.getAttribute("href").substring(1));
122                                obj.innerHTML=""; //清空整个之后重新生成
123                                page({
124                                    id:opt.id,
125                                    nowNum:nowNum,
126                                    allNum:allNum,
127                                    callback:callback
128                                })
129                                //阻止默认事件
130                                return false;
131                            }
132                        }
133                        
134                    }
135               }
136         </script>
137     </head>
138     <body>
139         <div id="div1"></div>
140     </body>
141 </html>

稍微再加点料:

 

posted @ 2016-10-28 13:46  h5monkey  阅读(440)  评论(0编辑  收藏  举报