JS 表格分页

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        table
        {
            border-collapse: collapse;
            text-align: center;
        }
        td
        {
            width: 80px;
            height: 30px;
            line-height: 30px;
            border: 1px solid #000000;
        }
        .lis
        {
            width: 20px;
            height: 20px;
            border: 1px solid #000000;
            text-align: center;
            line-height: 20px;
            float: left;
        }
        input{
            text-align: center;
        }
    </style>
</head>
<body>
<script>
    var phoneList=[
        {checked:true,icon:"img/icon_a.jpeg",brand:"Apple",goods:"Iphone X",num:1, color:"black", price:7988},
        {checked:false,icon:"img/icon_b.jpeg",brand:"Oppo",goods:"Oppo R9",num:1, color:"black", price:2500},
        {checked:true,icon:"img/icon_c.jpeg",brand:"huaWei",goods:"HuaWei",num:1, color:"black", price:2588},
        {checked:false,icon:"img/icon_d.jpeg",brand:"Xiaomi",goods:"Note",num:1, color:"black", price:2488},
        {checked:true,icon:"img/icon_e.jpeg",brand:"Sanxing",goods:"sanxing",num:1, color:"black", price:8888},
        {checked:true,icon:"img/icon_a.jpeg",brand:"Apple",goods:"Iphone X",num:1, color:"black", price:7988},
        {checked:false,icon:"img/icon_b.jpeg",brand:"Oppo",goods:"Oppo R9",num:1, color:"black", price:2500},
        {checked:true,icon:"img/icon_c.jpeg",brand:"huaWei",goods:"HuaWei",num:1, color:"black", price:2588},
        {checked:false,icon:"img/icon_d.jpeg",brand:"Xiaomi",goods:"Note",num:1, color:"black", price:2488},
        {checked:true,icon:"img/icon_e.jpeg",brand:"Sanxing",goods:"sanxing",num:1, color:"black", price:8888},
        {checked:true,icon:"img/icon_a.jpeg",brand:"Apple",goods:"Iphone X",num:1, color:"black", price:7988},
        {checked:false,icon:"img/icon_b.jpeg",brand:"Oppo",goods:"Oppo R9",num:1, color:"black", price:2500},
        {checked:true,icon:"img/icon_c.jpeg",brand:"huaWei",goods:"HuaWei",num:1, color:"black", price:2588},
        {checked:false,icon:"img/icon_d.jpeg",brand:"Xiaomi",goods:"Note",num:1, color:"black", price:2488},
        {checked:true,icon:"img/icon_e.jpeg",brand:"Sanxing",goods:"sanxing",num:1, color:"black", price:8888},
        {checked:true,icon:"img/icon_a.jpeg",brand:"Apple",goods:"Iphone X",num:1, color:"black", price:7988},
        {checked:false,icon:"img/icon_b.jpeg",brand:"Oppo",goods:"Oppo R9",num:1, color:"black", price:2500},
        {checked:true,icon:"img/icon_c.jpeg",brand:"huaWei",goods:"HuaWei",num:1, color:"black", price:2588},
        {checked:false,icon:"img/icon_d.jpeg",brand:"Xiaomi",goods:"Note",num:1, color:"black", price:2488},
        {checked:true,icon:"img/icon_e.jpeg",brand:"Sanxing",goods:"sanxing",num:1, color:"black", price:8888},
        {checked:true,icon:"img/icon_a.jpeg",brand:"Apple",goods:"Iphone X",num:1, color:"black", price:7988},
        {checked:false,icon:"img/icon_b.jpeg",brand:"Oppo",goods:"Oppo R9",num:1, color:"black", price:2500},
        {checked:true,icon:"img/icon_c.jpeg",brand:"huaWei",goods:"HuaWei",num:1, color:"black", price:2588},
        {checked:false,icon:"img/icon_d.jpeg",brand:"Xiaomi",goods:"Note",num:1, color:"black", price:2488},
        {checked:true,icon:"img/icon_e.jpeg",brand:"Sanxing",goods:"sanxing",num:1, color:"black", price:8888},
        {checked:true,icon:"img/icon_a.jpeg",brand:"Apple",goods:"Iphone X",num:1, color:"black", price:7988},
        {checked:false,icon:"img/icon_b.jpeg",brand:"Oppo",goods:"Oppo R9",num:1, color:"black", price:2500},
        {checked:true,icon:"img/icon_c.jpeg",brand:"huaWei",goods:"HuaWei",num:1, color:"black", price:2588},
        {checked:false,icon:"img/icon_d.jpeg",brand:"Xiaomi",goods:"Note",num:1, color:"black", price:2488},
        {checked:true,icon:"img/icon_e.jpeg",brand:"Sanxing",goods:"sanxing",num:1, color:"black", price:8888},
        {checked:true,icon:"img/icon_a.jpeg",brand:"Apple",goods:"Iphone X",num:1, color:"black", price:7988},
        {checked:false,icon:"img/icon_b.jpeg",brand:"Oppo",goods:"Oppo R9",num:1, color:"black", price:2500},
        {checked:true,icon:"img/icon_c.jpeg",brand:"huaWei",goods:"HuaWei",num:1, color:"black", price:2588},
        {checked:false,icon:"img/icon_d.jpeg",brand:"Xiaomi",goods:"Note",num:1, color:"black", price:2488},
        {checked:true,icon:"img/icon_e.jpeg",brand:"Sanxing",goods:"sanxing",num:1, color:"black", price:8888},
        {checked:true,icon:"img/icon_a.jpeg",brand:"Apple",goods:"Iphone X",num:1, color:"black", price:7988},
        {checked:false,icon:"img/icon_b.jpeg",brand:"Oppo",goods:"Oppo R9",num:1, color:"black", price:2500},
        {checked:true,icon:"img/icon_c.jpeg",brand:"huaWei",goods:"HuaWei",num:1, color:"black", price:2588},
        {checked:false,icon:"img/icon_d.jpeg",brand:"Xiaomi",goods:"Note",num:1, color:"black", price:2488},
        {checked:true,icon:"img/icon_e.jpeg",brand:"Sanxing",goods:"sanxing",num:1, color:"black", price:8888},
        {checked:true,icon:"img/icon_a.jpeg",brand:"Apple",goods:"Iphone X",num:1, color:"black", price:7988},
        {checked:false,icon:"img/icon_b.jpeg",brand:"Oppo",goods:"Oppo R9",num:1, color:"black", price:2500},
        {checked:true,icon:"img/icon_c.jpeg",brand:"huaWei",goods:"HuaWei",num:1, color:"black", price:2588},
        {checked:false,icon:"img/icon_d.jpeg",brand:"Xiaomi",goods:"Note",num:1, color:"black", price:2488},
        {checked:true,icon:"img/icon_e.jpeg",brand:"Sanxing",goods:"sanxing",num:1, color:"black", price:8888},
        {checked:true,icon:"img/icon_a.jpeg",brand:"Apple",goods:"Iphone X",num:1, color:"black", price:7988},
        {checked:false,icon:"img/icon_b.jpeg",brand:"Oppo",goods:"Oppo R9",num:1, color:"black", price:2500},
        {checked:true,icon:"img/icon_c.jpeg",brand:"huaWei",goods:"HuaWei",num:1, color:"black", price:2588},
        {checked:false,icon:"img/icon_d.jpeg",brand:"Xiaomi",goods:"Note",num:1, color:"black", price:2488},
        {checked:true,icon:"img/icon_e.jpeg",brand:"Sanxing",goods:"sanxing",num:1, color:"black", price:8888},
        {checked:true,icon:"img/icon_a.jpeg",brand:"Apple",goods:"Iphone X",num:1, color:"black", price:7988},
        {checked:false,icon:"img/icon_b.jpeg",brand:"Oppo",goods:"Oppo R9",num:1, color:"black", price:2500},
        {checked:true,icon:"img/icon_c.jpeg",brand:"huaWei",goods:"HuaWei",num:1, color:"black", price:2588},
        {checked:false,icon:"img/icon_d.jpeg",brand:"Xiaomi",goods:"Note",num:1, color:"black", price:2488},
        {checked:true,icon:"img/icon_e.jpeg",brand:"Sanxing",goods:"sanxing",num:1, color:"black", price:8888}
    ];
    phoneList.forEach(function (t, number, ts) {
        t.num=Math.floor(Math.random()*99+1)
    })
    // 当前数组长度按每页10个,可以分为几页,除十向上取整
    var pageNum=Math.ceil(phoneList.length/10);
    // 定位当前第几页,从0页开始到pagNum-2panNum 1开始,定位从0开始
    var position=0;
    // 新建一个空数组,截取后数组将用它盛放;
    var datas=[];
    // 创建一个table变量,是全局,但是开始全空
    var tb;
    // 根据pageNum 的数量创建一个分页ul
    var page=createPageList(pageNum)
    // 把分页ul插到body尾部
    document.body.appendChild(page);
    // 更新表格
    updateTable()
   /*
   * 每次数据变化时,执行这个更新表格,初始创建时先更新一次
   * 如果tb存在时,先删除tb
   * 根据positionphoneList数组中截取对应的位置数据存在data
   * 根据截取中的datas创建表格,并且插入到page前面
   *
   * */
    function updateTable() {
        if(tb){
            tb.remove();
        }
        datas=phoneList.slice(position*10,(position+1)*10);
        tb=createTable(datas);
        document.body.insertBefore(tb,page)
    }
     /*
     * 创建表格
     * 参数 data 对象型数组  ,根据截取的数据创建表格
     * */
    function createTable(data) {
        // 创建表格
        var table=document.createElement("table")
        // 创建表头行
        var thead=document.createElement("tr")
        // 循环第一行数据,获取所有属性
        for(var str in data[0]){
            // 根据属性创建表头列
            var th=document.createElement("th")
            // 表头列内容是属性名
            th.textContent=str
            // 把表头列加到表头行中
            thead.appendChild(th);
        }
        // 把表头行查到表格
        table.appendChild(thead);
        // 根据数据循环创建行
        for(var i=0;i<data.length;i++){
            // 创建行
            var tr=document.createElement("tr");
            // 根据每一行对象各属性循环创建列
            for(var pro in data[i]){
                // 属性是checked                if(pro==="checked"){
                    // 创建 checked                    var tdChecked=document.createElement("td")
                    //创建多选框
                    var checkBox=document.createElement("input")
                    // checked属性值为true时 勾选 flase为不勾选
                    checkBox.type="checkbox"
                    checkBox.checked=data[i][pro]?"checked":""
                    // 把多选框插到checked                    tdChecked.appendChild(checkBox)
                    // checked列插到行中
                    tr.appendChild(tdChecked)
                    // 属性是num                }else if(pro==="num"){
                    // 创建 num                    var tdText=document.createElement("td")
                    //创建文本框
                    var text=document.createElement("input")
                    // 设置文本框值为num的属性值
                    text.type="text"
                    text.value=data[i][pro];
                    // 把文本框插到num                    tdText.appendChild(text)
                    //num列插到行中
                    tr.appendChild(tdText)
                    // 属性是icon                }else if(pro==="icon"){
                    // 创建 icon                    var tdImg=document.createElement("td")
                    // 创建图像标签
                    var img=document.createElement("img")
                    // 设置img srcicon属性值
                    img.src=data[i][pro]
                    // 把图像标签插到icon                    tdImg.appendChild(img)
                    //icon列插到行中
                    tr.appendChild(tdImg)
                }else{
                    // 其他的创建列
                    var td=document.createElement("td")
                    // 列添加内容为属性值
                    td.textContent=data[i][pro];
                    //把列添加到行中
                    tr.appendChild(td)
                }
                //把行插到表格中
                table.appendChild(tr)
            }
        }
        // 返回表格
        return table
    }
     /*
     * 创建分页容器
     *
     * */

     function createPageList(pageNum) {
     // 创建ul
         var ul=document.createElement("ul")
         // 设置ul样式
         ul.style.listStyle="none"

         // 应为要加<<>>内容 所以总列表是总页数+2
         pageNum+=2
         // 循环总页数
         for(var i=0;i<pageNum;i++){
             //创建li
             var li=document.createElement("li")
             // 如果是0;创建<<
             if(i===0){
                 li.textContent="<<"
             }else if(i===pageNum-1){
                 //如果是最后一个创建内容>>
                 li.textContent=">>"
             }else {
                 //其他所有为当前i                 li.textContent=i
             }
             // 设置li的样式
             li.className="lis"
             // 侦听li的点击事件
             li.addEventListener("click",clickHandler)
             // 如果i>0;第二个li开始marginleft=10px
             if(i>0){
                 li.style.marginLeft="10px"
             }
             // 每个il放在ul             ul.appendChild(li)
         }
         return ul
     }
     /*
     * 点击事件
     * 点击对象是<< position 定位--,如果小于1 跳出
     * 点击对象是>> position 定位++,如果大于pageNum-2 跳出
     * 当点击数字时,position等于页码-1
     *
     * 当定位发生改变时,更新表格
     * */
     function clickHandler(e) {
         e=e||window.event;
         if(this.textContent==="<<"){
             if(position<1) return
             position--
         }else if(this.textContent===">>"){
             if(position>=pageNum-1) return
             position++
         }else {
             position=parseInt(this.textContent)-1
         }
         updateTable()
     }
    </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
package com; public class Pager { private int totalRows = 0; // 记录总数 private int totalPages = 0; // 总页数 private int pageSize = 10; // 每页显示数据条数,默认为10条记录 private int currentPage = 1; // 当前页数 private boolean hasPrevious = false; // 是否有上一页 private boolean hasNext = false; // 是否有下一页 public int getSearchFrom() { return (currentPage - 1) * pageSize; } public Pager() { } public void init(int totalRows) { this.totalRows = totalRows; this.totalPages = ((totalRows + pageSize) - 1) / pageSize; refresh(); // 刷新当前页面信息 } /** * * @return Returns the currentPage. * */ public int getCurrentPage() { return currentPage; } /** * * @param currentPage * current page * */ public void setCurrentPage(int currentPage) { this.currentPage = currentPage; refresh(); } /** * * @return Returns the pageSize. * */ public int getPageSize() { return pageSize; } /** * * @param pageSize * The pageSize to set. * */ public void setPageSize(int pageSize) { this.pageSize = pageSize; refresh(); } /** * * @return Returns the totalPages. * */ public int getTotalPages() { return totalPages; } /** * * @param totalPages * The totalPages to set. * */ public void setTotalPages(int totalPages) { this.totalPages = totalPages; refresh(); } /** * * @return Returns the totalRows. * */ public int getTotalRows() { return totalRows; } /** * * @param totalRows * The totalRows to set. * */ public void setTotalRows(int totalRows) { this.totalRows = totalRows; refresh(); } // 跳到第一页 public void first() { currentPage = 1; this.setHasPrevious(false); refresh(); } // 取得上一页(重新设定当前页面即可) public void previous() { if (currentPage > 1) { currentPage--; } refresh(); } // 取得下一页 public void next() { //System.out.println("next: totalPages: "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值