js面向过程 分页功能

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 
  4 <head>
  5     <meta charset="UTF-8">
  6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  8     <title>Document</title>
  9     <style>
 10         div {
 11             width: 800px;
 12             height: 40px;
 13             border: 1px solid #000;
 14             margin: 30px auto;
 15         }
 16     </style>
 17 </head>
 18 
 19 <body>
 20     <!-- 页面搞一个div  w800 h40 b1实黑 margin 30 auto -->
 21     <div></div>
 22     <script>
 23         let divObj = document.querySelector("div")
 24         let pageTag = {
 25             first: '首页',
 26             prev: '上一页',
 27             list: null,
 28             next: '下一页',
 29             last: '末页',
 30         };
 31 
 32         // page 分页、 total 总、data 数据
 33         let pageInfo = {
 34             pageNum: 6, // 当前页数
 35             pageSize: 10, // 每页显示条数  
 36             totalData: 1000, // 总条数 
 37             totalPage: 100, // 总页数 = 向上取整(总条数 / 每页显示条数)
 38         }
 39         pageInfo.totalPage = Math.ceil(pageInfo.totalData / pageInfo.pageSize)
 40         showTag()
 41             //div 设置为弹性盒
 42         divObj.style.display = "flex"
 43         divObj.style.justifyContent = "center"
 44         divObj.style.alignItems = "center"
 45 
 46         //分页标签
 47         function showTag() {
 48 
 49             //遍历对象创建和添加节点通过核心
 50             // DOM语法创建p标签 最终在页面追加( createElement createTextNode appendChild)
 51             for (var item in pageTag) {
 52                 // 创建标签
 53                 let p = document.createElement("p")
 54                 if (item == "list") {
 55                     pageTag.list = p
 56                 } else {
 57                     // 创建文本
 58                     const text = document.createTextNode(pageTag[item])
 59                         //追加文本
 60                     p.appendChild(text)
 61                         // 设置标签对象样式
 62                     p.style.border = "1px solid #000"
 63                     p.style.margin = "0 5px"
 64                     p.style.padding = "0 5px"
 65 
 66                 }
 67                 // 追加到div
 68                 divObj.appendChild(p)
 69                 console.log(divObj)
 70                     // console.log(pageTag.list)
 71                     // showNum()
 72             }
 73             // 禁用
 74             var divTag = divObj.querySelectorAll("p")
 75             console.log(divTag)
 76             if (pageInfo.pageNum == 1) {
 77                 divTag[0].style.background = "#ccc"
 78                 divTag[1].style.background = "#ccc"
 79             }
 80             if (pageInfo.pageNum == pageInfo.totalPage) {
 81                 divTag[3].style.background = "#ccc"
 82                 divTag[4].style.background = "#ccc"
 83             }
 84             showNum()
 85 
 86         }
 87         // showNum()
 88 
 89         //封装创建null p
 90         // var listObj = pageTag.list
 91 
 92         function creatP(i, tag = "p") {
 93             // divObj.innerHTML = ""
 94             // 步骤1:创建p标签里面写数字(createEle ment、createTextNode、appendChild)
 95             const p = document.createElement(tag)
 96             console.log(p)
 97             const text = document.createTextNode(i)
 98             p.appendChild(text)
 99 
100             console.log(p.innerText)
101                 // 步骤3:给p标签设置样式 border margin padding (注:同之前的p)
102             if (tag != "span") {
103                 p.style.border = "1px solid #000"
104                 p.style.margin = "0 5px"
105                 p.style.padding = "0 5px"
106             }
107 
108             // 步骤4:追加到null标签对象里面
109 
110             divObj.appendChild(p)
111             console.log(pageTag.list)
112 
113             // // 步骤5:设置默认选中效果
114             if (i == pageInfo.pageNum) {
115                 p.style.background = "orange"
116             }
117         }
118         //标签对象的数据
119         function showNum() {
120 
121 
122             // // 步骤0:获取null标签对象,
123             // var listObj = pageTag.list
124             //设置listObj 为弹性盒
125             pageTag.list.style.display = "flex"
126             pageTag.list.style.justifyContent = "center"
127             pageTag.list.style.alignItems = "center"
128                 //控制点
129             if (pageInfo.totalPage < 10) {
130                 for (j = 1; j <= pageInfo.totalPage; j++)
131                     creatP(j)
132 
133             } else {
134                 // //额外规律:思考如果你的数据只有2页有意义加点吗?
135                 //         回答:没有,至少10页
136                 // pageNum < 5    1 2 3 4 5...99 100
137                 if (pageInfo.pageNum < 5) {
138                     for (let i = 1; i <= 5; i++) {
139                         creatP(i)
140                     }
141                     creatP("...", "span");
142                     creatP(pageInfo.totalPage - 1)
143                     creatP(pageInfo.totalPage)
144                 } else if (pageInfo.pageNum == 5) {
145                     // pageNum == 5 1 2 3 4 5 6 7...99 100
146                     for (let i = 1; i <= 7; i++) {
147                         creatP(i)
148                     }
149                     creatP("...", "span");
150                     creatP(pageInfo.totalPage - 1)
151                     creatP(pageInfo.totalPage)
152                 } else if (pageInfo.pageNum > 5 && pageInfo.pageNum < pageInfo.totalPage - 4) {
153                     // pageNum > 5 && pageNum < 总页数 - 4 1 2...左2个 pageNum 右边2个...99 100
154                     creatP(1)
155                     creatP(2)
156                     creatP("...", "span")
157                     for (i = pageInfo.pageNum - 2; i <= pageInfo.pageNum + 2; i++) {
158                         creatP(i)
159                     }
160                     creatP("...", "span")
161                     creatP(99)
162                     creatP(100)
163 
164                 } else if (pageInfo.pageNum == pageInfo.totalPage - 4) {
165                     // pageNum == 总页数 - 4 1 2......后5五
166                     // pageNum > 总页数 - 4 1 2......后5五
167                     creatP(1)
168                     creatP(2)
169                     creatP("...", "span")
170                     creatP("...", "span")
171                     for (i = 0; i <= 4; i++) {
172                         creatP(pageInfo.pageNum + i)
173                     }
174 
175                 } else if (pageInfo.pageNum > pageInfo.totalPage - 4) {
176                     // pageNum == 总页数 - 4   1 2......后5五
177                     // pageNum > 总页数 - 4   1 2......后5五
178                     // if()
179                     creatP(1)
180                     creatP(2)
181                     creatP("...", "span")
182                     creatP("...", "span")
183                     for (i = pageInfo.totalPage - 4; i <= pageInfo.totalPage; i++) {
184                         creatP(i)
185                     }
186 
187                 }
188 
189 
190             }
191         }
192     </script>
193 </body>
194 
195 </html>

猜你喜欢

转载自www.cnblogs.com/yueyuez/p/11794952.html