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 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>