题解 | #分页#
分页
https://www.nowcoder.com/practice/71da71df9d1c4af9b8dc056213473ba7
function Pagination(container, total, current) { this.total = total; this.current = current; this.html = html; //this.val = val; this.el = null; //TODO: 创建分页组件根节点 this.el = document.createElement("ul"); this.el.classList.add("pagination"); if (!this.el) return; this.el.innerHTML = this.html(); container.appendChild(this.el); if (this.el.innerHTML == "") { this.el.classList.add("hide"); //TODO: 判断是否需要隐藏当前元素 } function html() { if (this.total <= 1) { return ""; } else if (this.total <= 5) { let str = ""; for (let i = 1; i <= total; i++) { if (this.current == i) { str += `<li class="current">${i}</li>`; } else { str += `<li>${i}</li>`; } } return str; } else if (this.current + 2 <= total && this.current - 2 >= 1) { let str = ""; if (this.current - 2 > 1) { str += `<li>首页</li>`; } for (let i = current - 2; i <= current + 2; i++) { if (this.current == i) { str += `<li class="current">${i}</li>`; } else { str += `<li>${i}</li>`; } } if (this.current + 2 < this.total) { str += `<li>末页</li>`; } return str; } else if (this.current + 2 > total) { let str = ""; str += `<li>首页</li>`; for (let i = total - 4; i <= total; i++) { if (this.current == i) { str += `<li class="current">${i}</li>`; } else { str += `<li>${i}</li>`; } } return str; } else { let str = ""; for (let i = 1; i <= 5; i++) { if (this.current == i) { str += `<li class="current">${i}</li>`; } else { str += `<li>${i}</li>`; } } str += `<li>末页</li>`; return str; } //TODO: 生成组件的内部html字符串 } }