[英]I have written code in JavaScript for dotted pagination. I want this code to be optimised and improved. How can I achieve it?
我想以某种方式将这段代码写在 20 行以下,而不是通过将它写在一行中,而是通过改进其中的一些逻辑,它包含多个我想要删除或减少它的 if 条件,或者我是否可以删除所有 if 条件并拥有在那个地方反应 function。 所以,如果有任何方法可以做到这一点,请帮助我。
在我优化它大约 5 天之前,这段代码大约有 150 行,现在我得到的代码少了很多,但我希望它更优化。 代码工作得很好,我只想优化它。
let start = 1,
limit = 1,
totalcount = 12 / limit,
request = new XMLHttpRequest();
function loadDoc(start) {
request.onload = function() {
let dataArr = JSON.parse(this.response).data,
table = "";
for (let i in dataArr) {
table += "<tbody><tr>";
table += "<td>"+ dataArr[i].id +"</td>";
table += "<td>"+ dataArr[i].first_name +"</td>";
table += "<td>"+ dataArr[i].last_name +"</td>";
table += "<td>"+ dataArr[i].email +"</td>";
table += "<td><img alt='' " + "src=" + dataArr[i].avatar + "></td>";
table += "</tr></tbody>";
}
document.getElementById("tbody").innerHTML = table;
};
request.open('GET', 'https://reqres.in/api/users?page=' + start + '&per_page=' + limit, true);
request.send();
function rebuildPagination(start, totalcount) {
let HTML = "";
HTML += addButton("1", start);
if (start > 3) HTML += "<button disabled>...</button>";
if (start === totalcount) HTML += addButton(start - 2, start);
if (start > 2) HTML += addButton(start - 1, start);
if (start !== 1 && start !== totalcount) HTML += addButton(start, start);
if (start < totalcount - 1) HTML += addButton(start + 1, start);
if (start === 1) HTML += addButton(start + 2, start);
if (start < totalcount - 2) HTML += "<button disabled>...</button>";
HTML += addButton(totalcount, start);
document.getElementById("page").innerHTML = HTML;
}
rebuildPagination(start, totalcount);
}
function addButton(number) {
return "<button onclick=loadDoc(" + number + ")>" + (number) + "</button>";
}
这段代码大约有 42 行正确编写我想以某种方式将这段代码写在 20 行以下,而不是通过将它写在一行中,而是通过改进其中的一些逻辑,它包含多个我想要删除或减少它的 if 条件。
我试图理解你的代码以及你想要做什么。 请注意,行数并不能说明代码的效率。 关于良好编码的最重要的一点是:
如果您想最小化代码以减少加载时间,请使用最小化程序。 我建议您使用 IDE 或允许语法突出显示和代码重新格式化的文本编辑器。 (最后一个对于自动缩进代码非常重要)如果可以,请使用jquery 。
如果您将来需要帮助,请告诉我们您的代码应该做什么。 没有它,很难从您的代码片段中获取它。
let start = 1,
limit = 1,
totalcount = Math.ceil(12 / limit),
request = new XMLHttpRequest();
function loadDoc(start) {
request.onload = function () {
let dataArr = JSON.parse(this.response).data;
const table = document.createElement("table");
const tbody = document.createElement("tbody");
for (let i in dataArr) {
const row = document.createElement("row");
for (let attr in dataArr[i]) {
if (dataArr[i].hasOwnProperty(attr) && attr !== "avatar") {
const td = document.createElement("td");
td.nodeValue = dataArr[i]["" + attr];
row.appendChild(td);
}
}
const avatarTD = document.createElement("td");
if (dataArr[i].hasOwnProperty("avatar")) {
const avatarImg = document.createElement("img");
avatarImg.setAttribute("src", dataArr[i].avatar);
row.appendChild(avatarImg);
}
tbody.appendChild(row);
}
table.appendChild(tbody);
document.getElementById("table").replaceWith(table);
}
// request.open('GET', 'https://reqres.in/api/users?page=' + start + '&per_page=' + limit, true);
// request.send();
};
function rebuildPagination(start, totalcount) {
const page = document.getElementById("page");
const paginationStart = (Math.max(1, start));
const paginationEnd = Math.min(paginationStart + 4, totalcount);
for (let i = paginationStart; i <= paginationEnd; i++) {
if (
(i === paginationStart && paginationStart > 1) ||
(i === paginationEnd && paginationEnd < totalcount)
) {
const button = document.createElement("button");
button.setAttribute("disabled", "disabled");
button.innerHTML = "...";
page.appendChild(button);
} else {
addButton(page, i);
}
}
}
rebuildPagination(start, totalcount);
function addButton(parent, number) {
const button = document.createElement("button");
button.addEventListener("click", function () {
alert("call loadDoc");
loadDoc(number);
});
button.innerHTML = "(" + number + ")";
parent.appendChild(button);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.