1function myPageInit({ 2 pages = 10, 3 currentPage = 1, 4 element = '.my-page', 5 callback 6}) { 7 8 intercept(); 9 10 const myPageEl = document.querySelector(element); 11 12 // æé ç»æ 13 let htmlStrArr = []; 14 for (let i = 0; i < pages; i++) { 15 htmlStrArr.push(`<li class="my-page-cell">${i + 1}</li>`); 16 }; 17 if (pages > 7) { 18 htmlStrArr.splice(5, htmlStrArr.length - 6, "<li class='my-page-omit'>...</li>"); 19 }; 20 htmlStr = htmlStrArr.join(""); 21 let pageHtmlStr = `<div class="my-page-prev">ä¸é¡µ</div> 22 <ul class="my-page-group">${htmlStr}</ul> 23 <div class="my-page-next">ä¸é¡µ</div>`; 24 25 // æ³¨å ¥ç»æ 26 myPageEl.innerHTML = pageHtmlStr; 27 28 // æ è®°é»è®¤é¡µ 29 clickPageFun(currentPage); 30 31 // ä¸ä¸é¡µåæ¢äºä»¶æ³¨å 32 let btns = document.querySelectorAll(`${element} div`); 33 btns.forEach(el => { 34 el.onclick = switchPage; 35 }); 36 37 // ç¹å»äºä»¶æ³¨å 38 myPageEl.onclick = function (e) { 39 // console.log(e) 40 let classNameArr = e.target.className.split(" "); 41 if (classNameArr.indexOf("my-page-cell") !== -1) { 42 clickPageFun(Number(e.target.innerText)); 43 }; 44 } 45 46 // ä¸ä¸é¡µæé®è§¦å 47 function switchPage(e) { 48 // è·åå½å页 49 let page = document.querySelector(`${element} .my-page-checked`).innerText - 0; 50 51 let classNameArr = e.target.className.split(" "); 52 if (classNameArr.indexOf("my-page-prev") !== -1) { 53 clickPageFun(page - 1); // ä¸ä¸é¡µ 54 } else if (classNameArr.indexOf("my-page-next") !== -1) { 55 clickPageFun(page + 1); // ä¸ä¸é¡µ 56 }; 57 }; 58 59 60 // å页忢å¤ç 61 function clickPageFun(page) { 62 page = Number(page); 63 // 满足æ¡ä»¶æ¹åç»æ 64 if (pages > 7) { 65 let newEl = ''; 66 if (page <= 4) { 67 newEl = ` 68 <li class="my-page-cell">1</li> 69 <li class="my-page-cell">2</li> 70 <li class="my-page-cell">3</li> 71 <li class="my-page-cell">4</li> 72 <li class="my-page-cell">5</li> 73 <li class="my-page-omit">...</li> 74 <li class="my-page-cell">${pages}</li>`; 75 } else if (page >= 5 && page < pages - 3) { 76 newEl = ` 77 <li class="my-page-cell">1</li> 78 <li class="my-page-omit">...</li> 79 <li class="my-page-cell">${page - 1}</li> 80 <li class="my-page-cell">${page}</li> 81 <li class="my-page-cell">${page + 1}</li> 82 <li class="my-page-omit">...</li> 83 <li class="my-page-cell">${pages}</li>`; 84 } else if (page >= pages - 3) { 85 newEl = ` 86 <li class="my-page-cell">1</li> 87 <li class="my-page-omit">...</li> 88 <li class="my-page-cell">${pages - 4}</li> 89 <li class="my-page-cell">${pages - 3}</li> 90 <li class="my-page-cell">${pages - 2}</li> 91 <li class="my-page-cell">${pages - 1}</li> 92 <li class="my-page-cell">${pages}</li>`; 93 }; 94 document.querySelector(`${element} .my-page-group`).innerHTML = newEl; 95 96 }; 97 98 // æ æ³¨éä¸é¡¹ 99 let pageCellELs = document.querySelectorAll(`${element} .my-page-cell`); 100 pageCellELs.forEach(el => { 101 if (el.innerText == page) { 102 el.classList.add('my-page-checked'); 103 } else { 104 el.classList.remove('my-page-checked'); 105 }; 106 }); 107 108 forbidden(page); 109 110 // åè°ååº 111 callback && callback(page); 112 }; 113 114 // ä¸ä¸é¡µæé®å¯ç¦ 115 function forbidden(page) { 116 let prveEl = document.querySelector(`${element} .my-page-prev`); 117 let nextEl = document.querySelector(`${element} .my-page-next`); 118 if (page === 1) { 119 prveEl.classList.add('my-page-forbid'); 120 } else { 121 prveEl.classList.remove('my-page-forbid'); 122 }; 123 124 if (page === pages) { 125 nextEl.classList.add('my-page-forbid'); 126 } else { 127 nextEl.classList.remove('my-page-forbid'); 128 }; 129 }; 130 131 // åæ°æ£éª 132 function intercept() { 133 if (!pages || pages === 0 || (Math.floor(pages) != pages)) { 134 throw "my-pageä¸pageså¿ é¡»æ¯æ´æ°ä¸ä¸ä¸º0"; 135 pages = Math.floor(pages); 136 }; 137 138 if (!currentPage || currentPage === 0 || (Math.floor(currentPage) !== currentPage)) { 139 throw "my-pageä¸currentPageå¿ é¡»æ¯æ´æ°ä¸ä¸ä¸º0"; 140 currentPage = Math.floor(currentPage); 141 142 }; 143 144 if (document.querySelectorAll(element).length === 0) { 145 throw element + "å ç´ ä¸åå¨"; 146 }; 147 148 if (currentPage > pages) { 149 throw "å½å页ä¸åå¨"; 150 } 151 }; 152}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.