JS分页Page实现代码节选

本文详细介绍了如何使用JavaScript创建一个分页对象,包括处理分页逻辑(如首页、上一页、下一页、尾页、指定页跳转),以及如何根据用户选择调整每页显示的记录数。该内容适用于前端开发中处理表格或列表分页功能的场景。
摘要由CSDN通过智能技术生成

/**
 * 分页对象
 */
function Page() {
    
    this.list = null; // 数据列表
    this.pageNumber = 1; // 当前页数
    this.totalPage = 1; // 总页数
    this.totalRow = 0; // 总记录数
    this.pageSize = document.getElementById("page_size").value / 1; // 每页条数
    
    this.queryData = null; // 查询参数
    
    // 首页
    this.homePage = function() {
        if (this.isFirstPage()) {
            qyAlert("已是首页!");
            return;
        }
        this.pageNumber = 1;
        this.reloadData();
    }
    // 上一页
    this.prevPage = function() {
        var _pageNumber = this.pageNumber - 1;
        if (this.isFirstPage() || _pageNumber < 1) {
            qyAlert("已是第一页!");
            return;
        }
        this.pageNumber--;
        // 重新加载数据
        this.reloadData();
    }
    // 下一页
    this.nextPage = function() {
        var _pageNumber = this.pageNumber + 1;
        if (this.isLastPage() || _pageNumber > this.totalPage) {
            qyAlert("已是最后一页!");
            return;
        }
        this.pageNumber++;
        // 重新加载数据
        this.reloadData();
    }
    // 尾页
    this.lastPage = function() {
        if (this.isLastPage()) {
            qyAlert("已是尾页!");
            return;
        }
        this.pageNumber = this.totalPage;
        // 重新加载数据
        this.reloadData();
    }
    // 跳转到指定页
    this.jumpPage = function(_jumpPageNumber) {
        var _pageNumber = _jumpPageNumber || getIptNumVal("jump_page");
        if (!_pageNumber || isNaN(_pageNumber)) {
            qyAlert("请输入正确的页数!");
            return;
        }
        if (_pageNumber < 1 || _pageNumber > this.totalPage) {
            //qyAlert("输入页数错误,超出了实际页码范围!");
            qyAlert("目标页[" + _pageNumber + "]不存在!");
            return;
        }
        if (this.pageNumber == _pageNumber) {
            qyAlert("已经是当前页!");
            return;
        }
        this.pageNumber = _pageNumber;
        // 重新加载数据
        this.reloadData();
    }
    // 是否首页
    this.isFirstPage = function() {
        return this.pageNumber == 1;
    }
    // 是否尾页
    this.isLastPage = function() {
        return this.pageNumber == this.totalPage;
    }
    // 调整每页条数
    this.changePageSize = function(_changePageSize) {
        var _pageSize = _changePageSize || getIptNumVal("page_size");
        this.pageSize = _pageSize;
        // 重新加载数据
        this.reloadData();
    }
    // 重新加载数据
    this.reloadData = function() {
        // 重新加载数据
        reloadBbmxData(this);
    }
    // 赋值和渲染分页信息
    this.setAndRender = function(jsonData) {
        if (jsonData && jsonData.list) {
            this.list = jsonData.list; // 数据列表
            this.pageNumber = jsonData.pageNumber; // 当前页数
            this.totalPage = jsonData.totalPage > 0 ? jsonData.totalPage : 1; // 总页数
            this.totalRow = jsonData.totalRow; // 总记录数
            this.pageSize = jsonData.pageSize; // 每页条数
        }
        $("#total_row").html(this.totalRow); // 总记录数
        $("#total_page").html(this.totalPage); // 总页数
        $("#current_page").html(this.pageNumber); // 当前页数
    }
}

var page = new Page(); // 创建分页对象

/**
 * 获取表单的数值
 * @param ipt_id     表单id
 * @returns {Number} 返回表单的值
 */
function getIptNumVal(ipt_id) {
    try {
        var v_val = $("#" + ipt_id).val();
        if (isNaN(v_val)) { // 不是数字
            return 0;
        }
        v_val = Number(v_val); // Numner("")结果为0
        return v_val;
    } catch(ex) {
        return 0;
    }
}


<!-- 按钮样式 -->
<style type="text/css">
    .button {
        display: inline-block;
        vertical-align: top;
        text-align: center;
        text-decoration: none !important;
        border-radius: 3px;
        margin-left: 12px;
        overflow: hidden;
        cursor: pointer;
        line-height: 1;
        background-color: #fff;
        color: #53acf3;
        border: 1px solid #53acf3;
        padding: 9px 48px;
        font-size: 16px
    }

    .button:first-child {
        margin-left: 0
    }

    .button.button-sm {
        padding: 7px 17px;
        font-size: 12px;
        margin-left: 6px;
    }

    .button.button-sm:first-child {
        margin-left: 0
    }

    .button.button-xs {
        padding: 5px 10px;
        font-size: 12px;
        margin-left: 6px;
    }

    .button.button-xs:first-child {
        margin-left: 0
    }

    .button:hover {
        background-color: #edf6fc;
        border-color: #3e9be5;
        color: #3e9be5;
        text-decoration: none !important
    }

    .button.button-blue {
        background-color: #53ACF3;
        border-color: #53ACF3;
        color: #FFF
    }

    .button.button-blue:hover {
        background-color: #3e9be5;
        border-color: #3e9be5
    }

    .button.button-disable {
        background-color: #f7f7f7;
        border-color: #ddd;
        color: #bbb;
        cursor: not-allowed
    }
</style>

<!-- 分页 -->
<div id="pager" style="margin-top: 8px; width: 99%;">
    <div class="page_left" style="float: left;">
        <span>每页</span>
        <select id="page_size" name="pageSize" οnchange="page.changePageSize();" style="width: 50px; height: 24px;">
            <option value="30">30</option>
            <option value="50">50</option>
            <option value="100">100</option>
            <option value="200">200</option>
            <option value="500">500</option>
            <option value="1000">1000</option>
        </select>
        条,共<span id="total_row">0</span>条记录
    </div>
    <div class="page_right" style="float: right;">
        <button id="home_page" class="button button-blue button-xs" οnclick="page.homePage();">首页</button>
        <button id="prev_page" class="button button-blue button-xs" οnclick="page.prevPage();">上一页</button>
        <button id="next_page" class="button button-blue button-xs" οnclick="page.nextPage();">下一页</button>
        <button id="last_page" class="button button-blue button-xs" οnclick="page.lastPage();">尾页</button>
        <span id="current_page">1</span>/<span id="total_page">1</span>页
        <input id="jump_page" name="jumpPageNumber" type="text" class="ipt" digit="0" style="width: 30px; height: 24px; padding-right: 4px;"/>
        <button id="jump_page_btn" type="button" class="button button-blue button-xs" style="margin-left: 2px;" οnclick="page.jumpPage();">跳转</button>                        
    </div>
</div>

用心工作,认真生活。

  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于将List集合转换成Page分页代码实现,以下是一个简单的示例代码: ``` import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import java.util.List; public class ListToPage { public static void main(String[] args) { // 假设有一个名为 userList 的 List 集合,需要将其分页 List<User> userList = getUsers(); // 设置分页信息,包括当前页码和每页显示条数 int pageNo = 1; int pageSize = 10; // 使用 PageHelper 工具类开始分页 PageHelper.startPage(pageNo, pageSize); // 执行分页操作,返回 PageInfo 对象 PageInfo<User> pageInfo = new PageInfo<>(userList); // 获取分页后的当前页数据 List<User> pageList = pageInfo.getList(); // 输出分页结果 System.out.println("当前页码:" + pageInfo.getPageNum()); System.out.println("每页显示条数:" + pageInfo.getPageSize()); System.out.println("总条数:" + pageInfo.getTotal()); System.out.println("总页数:" + pageInfo.getPages()); System.out.println("当前页数据:" + pageList); } // 模拟获取用户数据 private static List<User> getUsers() { // 返回一个简单的 User 对象集合 return List.of( new User(1, "张三"), new User(2, "李四"), new User(3, "王五"), new User(4, "赵六"), new User(5, "钱七"), new User(6, "孙八"), new User(7, "周九"), new User(8, "吴十") ); } private static class User { private int id; private String name; public User(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + '}'; } } } ``` 上述代码中,首先我们定义了一个 List<User> 类型的用户数据集合 userList。然后,我们设置了当前页码为 1,每页显示条数为 10。接着,我们使用 PageHelper.startPage() 方法开始分页,并将 userList 作为参数传入 PageInfo 构造函数。最后,我们可以通过 PageInfo 对象获取分页的详细信息,其中 getList() 方法可以获取当前页数据列表。最终,我们通过 System.out.println() 方法输出分页信息和当前页数据,完成了集合转换成 Page 分页的所有步骤。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值