Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我已经用JavaScript编写了点分页代码。我希望这段代码得到优化和改进。我怎样才能做到呢?_Javascript_Performance_Optimization_Pagination - Fatal编程技术网

我已经用JavaScript编写了点分页代码。我希望这段代码得到优化和改进。我怎样才能做到呢?

我已经用JavaScript编写了点分页代码。我希望这段代码得到优化和改进。我怎样才能做到呢?,javascript,performance,optimization,pagination,Javascript,Performance,Optimization,Pagination,我想让这段代码不超过20行,不是通过在一行中编写,而是通过改进其中的一些逻辑,它包含多个if条件,我想删除或减少这些条件,或者如果我可以删除所有if条件,并在那里使用递归函数。所以,如果有什么办法的话,请帮助我 这段代码大约有150行,在我优化它大约5天之前,现在我得到的更少,但我希望它更优化。代码运行得非常好,我只是希望它得到优化 let start = 1, limit = 1, totalcount = 12 / limit, request = new XMLHt

我想让这段代码不超过20行,不是通过在一行中编写,而是通过改进其中的一些逻辑,它包含多个if条件,我想删除或减少这些条件,或者如果我可以删除所有if条件,并在那里使用递归函数。所以,如果有什么办法的话,请帮助我

这段代码大约有150行,在我优化它大约5天之前,现在我得到的更少,但我希望它更优化。代码运行得非常好,我只是希望它得到优化

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>";
}
let start=1,
极限=1,
totalcount=12/限制,
请求=新的XMLHttpRequest();
函数loadDoc(开始){
request.onload=函数(){
让dataArr=JSON.parse(this.response).data,
表=”;
for(让我输入数据阵列){
表+=”;
表+=“”+dataArr[i].id+“”;
表+=“”+dataArr[i]。名字+“”;
表+=“”+dataArr[i]。姓氏+“”;
表+=“”+dataArr[i]。电子邮件+“”;
表+=”;
表+=”;
}
document.getElementById(“tbody”).innerHTML=表格;
};
request.open('GET','https://reqres.in/api/users?page=“+start+”&每页=“+limit,true);
request.send();
函数重建映像(开始,totalcount){
设HTML=“”;
HTML+=添加按钮(“1”,开始);
如果(开始>3)HTML+=“…”;
如果(开始===totalcount)HTML+=addButton(开始-2,开始);
如果(开始>2)HTML+=addButton(开始-1,开始);
如果(开始!==1&&start!==totalcount)HTML+=addButton(开始,开始);
如果(start

这段代码大约有42行,写得很好。我希望这段代码不超过20行,不是通过一行来写,而是通过改进其中的一些逻辑,它包含多个if条件,我想删除或减少这些条件。

我试图理解你的代码和你想做的事情。请注意,行数并不能说明代码的效率。好的编码最重要的一点是:

  • 您的代码可读且格式良好
  • 您应该更喜欢对象表示而不是字符串(在您的情况下,最好使用DOM)
  • 试着考虑使用循环而不是重复的代码
如果希望最小化代码以减少加载时间,请使用。我建议您使用IDE或文本编辑器,允许语法突出显示和代码重新格式化。(最后一个对于自动缩进代码非常重要) 如果可以,请使用

如果您将来需要帮助,请告诉我们您的代码应该做什么。没有它,很难从代码片段中获得它

let limit=10,
分页开始=1,
paginationEnd=1,
numberOfPages=15,
请求=新的XMLHttpRequest(),
实际页面=1;
常数dummyData=[{
阿凡达:“https://miro.medium.com/max/1080/1*HvFeV6SKhiW2YFEWAvQVEQ.jpeg“,
id:1,
名字:“约翰”,
姓氏:“Doe”,
电子邮件:“johndoe@example.com"
},
{
阿凡达:“https://i.kym-cdn.com/photos/images/newsfeed/000/173/576/Wat8.jpg?1315930535",
id:2,
名字:“蒂娜”,
姓氏:“Doe”,
电子邮件:“tinadoe@example.com"
},
{
阿凡达:“https://i.kym-cdn.com/photos/images/newsfeed/000/173/576/Wat8.jpg?1315930535",
id:3,
名字:“蒂娜”,
姓氏:“Doe”,
电子邮件:“tinadoe@example.com"
},
{
阿凡达:“https://i.kym-cdn.com/photos/images/newsfeed/000/173/576/Wat8.jpg?1315930535",
id:4,
名字:“蒂娜”,
姓氏:“Doe”,
电子邮件:“tinadoe@example.com"
}];
函数loadDoc(){
document.getElementById(“页码”).innerText=actualPage;
重建映像();
/*request.onload=函数(){
让dataArr=JSON.parse(this.response).data;
}
*/
processData(dummyData);
//request.open('GET','https://reqres.in/api/users?page=“+start+”&每页=“+limit,true);
//request.send();
};
函数重建映像(){
document.getElementById(“页码”).innerText=actualPage;
const oldPage=document.getElementById(“页面”);
const page=document.createElement(“div”);
page.setAttribute(“id”,“page”);
旧页。替换为(页);
让中间=(实际页面>1)?实际页面:实际页面+1;
让leftSibling=Math.max(1,middle-1);
设rightSibling=Math.min(numberOfPages,middle+1);
如果(左同级>1){
添加按钮(第1页);
如果(左同级>2){
添加按钮(第页“…”);
}
}
if(右同级===中间){
addButton(第页,leftSibling-1);
}
addButton(页面,左侧同级);
添加按钮(页面,中间);
如果(右同胞!==中间){
添加按钮(第页,右侧同级);
}
如果(numberOfPages-右侧同级>1){
添加按钮(第页“…”);
添加按钮(第15页);
}else if(numberOfPages-rightSibling==1){
添加按钮(第15页);
}
}
重建映像();
功能添加按钮(父项、编号、目录