纯js写分页 (算法把我纠结住了)

$(function () {
    //下一页
    $("#nextPage").click(function () {
        tableRmove();
        var curr = $("#CurrentPage").attr("value");
        var newCurr = Number(curr);    //当前页
        var max = $("#MaxPage").attr("value");
        var newMax = Number(max);     //最大的页码
        if (newCurr >= newMax) {
            newCurr = 1;
        } else {
            newCurr = newCurr + 1;
        }
        $("#CurrentPage").val(newCurr);
        if ($("#pagercss") != null && $("#pagercss") != "undefined") {
            getPageCss({ currPage: newCurr });
        }
        goPage();
    });
    //上一页
    $("#prevPage").click(function () {
        tableRmove();
        var curr = $("#CurrentPage").attr("value");
        var newCurr = Number(curr);
        if (newCurr == 1) {
            var max = $("#MaxPage").attr("value");
            var newMax = Number(max);
            newCurr = max;
        } else {
            newCurr = newCurr - 1;
        }
        $("#CurrentPage").val(newCurr);
        if ($("#pagercss") != null && $("#pagercss") != "undefined") {
            getPageCss({ currPage: newCurr });
        }
        goPage();

    });
    //第一页
    $("#firstPage").click(function () {
        tableRmove();
        var newCurr = 1;
        $("#CurrentPage").val(newCurr);
        if ($("#pagercss") != null && $("#pagercss") != "undefined") {
            getPageCss({ currPage: newCurr });
        }
        goPage();
    });

    //尾页
    $("#lastPage").click(function () {
        tableRmove();
        var curr = $("#MaxPage").attr("value");
        var newCurr = Number(curr);

        $("#CurrentPage").val(newCurr);

        if ($("#pagercss") != null && $("#pagercss") != "undefined") {
            getPageCss({ currPage: newCurr });
        }
        goPage();
    });
});
function goPage() {
    var formData = $("#pagerForm").serialize();
    var type = $("#PagerType").val();
    switch (type) {
        case "1": pagerType1(formData); break;
        case "2": pagerType2(formData); break;
        case "3": pagerType3(formData); break;
        case "4": pagerType4(formData); break;
        case "5": pagerType5(formData); break;
        case "6": pagerType6(formData); break;
        case "7": pagerType7(formData); break;
        case "8": pagerType8(formData); break;
        default: pagerType1(formData);
    }
    //分页
    $.ajax({
        type: "POST",
        url: pagerUrl + "?tick=" + new Date().getMilliseconds(),
        data: formData,
        cache: false,
        dataType: "json",
        success: function (data) {
            commjson.pagerSync(data);
        }
    });

}

//生成页码样式
function getPageCss(pagerData) {
    var curr = pagerData.currPage || 1; //当前 
    var maxPage = $("#MaxPage").val();
    var max = pagerData.maxPage || Number(maxPage); //最大页数     
    var diff = pagerData.pagerDiffence || 2; //页差         
    var show = pagerData.showPage || 5; //显示页数   
    var start = (curr - diff) > 0 ? (curr + diff > max ? max - show + 1 : curr - diff) : 1; //开始页数
    var end = start + show > max ? max + 1 : start + show; //结束页数
    if (max < show) {//最大页数小于显示页数   
        for (var i = 1; i < max; i++) {
            if (curr == i) {
                html += '<a style="color:red;" href="javascript:void(0)" class="pagebtn">' + i + '</a>';
            } else {
                html += '<a href="javascript:void(0)" class="pagebtn">' + i + '</a>';
            }
        }
    }
    else if (curr - diff < 0) {//当前-页差<0
        for (var i = start; i < end; i++) {
            if (curr == i) {
                html += '<a style="color:red;" href="javascript:void(0)" class="pagebtn">' + i + '</a>';
            } else {
                html += '<a href="javascript:void(0)" class="pagebtn">' + i + '</a>';
            }
        }
        //拼接下一页末页        
    }
    else if (curr + show - 1 > max) {//当前页+显示页数-1>最大页数
        //拼接首页上一页
        for (var i = start; i < end; i++) {
            if (curr == i) {
                html += '<a style="color:red;" href="javascript:void(0)" class="pagebtn">' + i + '</a>';
            } else {
                html += '<a href="javascript:void(0)" class="pagebtn">' + i + '</a>';
            }
        }

    } else {
        //拼接首页上一页
        for (var i = start; i < end; i++) {
            if (curr == i) {
                html += '<a style="color:red;" href="javascript:void(0)" class="pagebtn">' + i + '</a>';
            } else {
                html += '<a href="javascript:void(0)" class="pagebtn">' + i + '</a>';
            }
        }
        //拼接下一页末页
    }
    $("#pagercss").html(html);
}
$(".pagebtn").die().live("click", function () {
    tableRmove();
    var newCurr = Number($(this).text());
    $("#CurrentPage").val(newCurr);
    getPageCss({ currPage: newCurr });
    goPage();
});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值