JS分页功能

简介: JS分页功能

HTML:

<div class="tip"></div>

        <div class="tab">
            <table border="1" cellpadding="10" cellspacing="0" style="text-align: center;">
                <thead>
                    <tr>
                        <th>序号</th>
                        <th>姓名</th>
                        <th>性别</th>
                        <th>年龄</th>
                        <th>电话</th>
                        <th>地址</th>
                    </tr>
                </thead>
                <tbody class="list">
            
                </tbody>
            </table>
        </div>
        
        <div class="box"></div>
        <div class="boxData">
            <select name="" id="" class="selects">
                <option value="5">每页5条数据</option>
                <option value="10">每页10条数据</option>
                <option value="15">每页15条数据</option>
                <option value="20">每页20条数据</option>
                <option value="25">每页25条数据</option>
            </select>
        </div> 

CSS:

* {
    padding: 0;
    margin: 0;
    font-size: 14px;
}

.tip {
    width: 150px;
    height: 50px;
    position: fixed;
    border-radius: 25px;
    display: none;
    line-height: 50px;
    text-align: center;
}

th {
    width: 250px;
    height: 25px;
}
.tab{
    width: 90%;
    margin-left: 5%;
    height: 600px;
    overflow-y: scroll;
    
}
table {    
    width: 80%;
    margin-left: 150px;
    margin-top: 50px;
    
}

.box {
    margin-left: 150px;
    margin-top: 20px;
    position: fixed;
}
.boxData{
    margin-left: 150px;
    margin-top: 50px;
}

td {
    height: 50px;
}

.back,.next {
    width: 55px;
    height: 25px;
    border-radius: 5px;
    border: 0;
}
.num{
    width: 25px;
    height: 25px;
    border-radius: 5px;
    border: 0;
    
}
.first,.last{
    width: 35px;
    height: 25px;
    border-radius: 5px;
    border: 0;
}
input{
    width: 25px;
}
.target{
    width: 35px;
    height: 25px;
    border-radius: 5px;
    border: 0;
}
button:hover{
    background-color: lightgray;
}
button{
    margin-left: 3px;
}
.inner{
    display: inline-block;
    width: 17px;
    text-align: center;
} 

JS:

        let text;
        let data;
        let xhr = new XMLHttpRequest();
        xhr.open('get', 'js/5.8.json', true);
        xhr.send();
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && xhr.status == 200) {
                text = xhr.responseText;
                datad = JSON.parse(text);
                data = datad
                console.log(data);
                vray(data);
            }
        };

        let k = 0;
        let num = 5;
        let countPage

        function vray(data) {
            console.log(data);
            countPage = data.length / num;
            let str = '';
            let strBox = '';
            for (let i = k * num; i < (k + 1) * num; i++) {
                if(data[i] == undefined){
                    break;
                }
                str += `<tr>
                            <td>${i+1}</td>
                            <td>${data[i].name}</td>
                            <td>${data[i].sex}</td>
                            <td>${data[i].age}</td>
                            <td>${data[i].tel}</td>
                            <td>${data[i].local}</td>
                        </tr>`;

            }
            document.getElementsByClassName('list')[0].innerHTML = str; 

           strBox += `总共<div class="inner">${data.length}</div>条数据,当前是第<div class="inner">${k+1}</div>页 显示第<div class="inner">${k*num +1}</div>条到第<div class="inner">${(k+1)*num}</div>条数据

                    
                <button οnclick="first()" class="first">首页</button><button οnclick="back()" class="back">上一页</button>`;
            for (let i = 0; i < countPage; i++) {
                strBox += `<button οnclick="target(${i})" ${k==i?'style="background-color:gray"':''} class="num">${i+1}</button>`;
            }
            strBox += `<button οnclick="next()" class="next">下一页</button><button οnclick="last()" class="last">尾页</button>
            前往<input class="page"/>页 <button οnclick="tar()" class="target">跳转</button>`;
            document.getElementsByClassName('box')[0].innerHTML = strBox;
        }

        function first() {
            k = 0;
            vray(data)
        }

        function last() {
            k = countPage - 1;
            vray(data);
        }
        function target(i){
            k = i;
            vray(data);
        }
        //上一页
        function back() {
            if (k > 0) {
                k--;
                vray(data);
            } else {
                $('.tip').show()
                document.getElementsByClassName('tip')[0].innerHTML = `再往前就没有了哟~`;
                setTimeout(function() {
                    $('.tip').hide()
                }, 1500)

            }
        }
        //下一页
        function next() {
            if (k < countPage -1) {
                k++;
                vray(data);
            } else {
                $('.tip').show()
                document.getElementsByClassName('tip')[0].innerHTML = `再往后就没有了哟~`;
                setTimeout(function() {
                    $('.tip').hide()
                }, 1500)

            }
        }
        //跳转
        function tar() {
            let num = document.getElementsByClassName('page')[0].value;
            if (num == '') {
                $('.tip').show()
                document.getElementsByClassName('tip')[0].innerHTML = `页码不能为空哦~`;
                setTimeout(function() {
                    $('.tip').hide()
                }, 1500)
            } else if (num > countPage) {
                $('.tip').show()
                document.getElementsByClassName('tip')[0].innerHTML = `没有这个页码呢~`;
                setTimeout(function() {
                    $('.tip').hide()
                }, 1500)
            } else if (num <= 0 || num % 1 != 0) {
                $('.tip').show()
                document.getElementsByClassName('tip')[0].innerHTML = `页码数不对哦~`;
                setTimeout(function() {
                    $('.tip').hide()
                }, 1500)
            } else {
                k = num - 1;
            }
            vray(data);
        }
        let selects = document.getElementsByClassName('selects')[0];
        console.log(selects);
        selects.addEventListener("change", function() {
            //重新赋值
            num = this.value;
            // 获取现在有的页码
            countPage = Math.ceil(data.length / num);
            console.log(countPage);
            // 判断k是否大于总页码
            if (k > countPage - 1) {
                k = countPage - 1;
            };
            vray(data);
        }); 

浅浅记录一下。

相关文章
|
1月前
|
JavaScript 前端开发
JavaScript分页功能
JavaScript分页功能
|
10天前
|
JavaScript
js实现简洁实用的网页计算器功能源码
这是一款使用js实现简洁实用的网页计算器功能源码。可实现比较基本的加减乘除四则运算功能,界面简洁实用,是一款比较基本的js运算功能源码。该源码可兼容目前最新的各类主流浏览器。
18 2
|
26天前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
|
1月前
|
JavaScript 前端开发 API
|
1月前
|
JavaScript API UED
vue.js怎么实现全屏显示功能
【10月更文挑战第7天】
16 1
|
1月前
|
资源调度 JavaScript UED
如何使用Vue.js实现单页应用的路由功能
【10月更文挑战第1天】如何使用Vue.js实现单页应用的路由功能
|
1月前
|
JavaScript 搜索推荐
JS中的模糊查询功能
JS中的模糊查询功能
26 1
|
1月前
|
前端开发 JavaScript
使用 JavaScript 实现图片预览功能
使用 JavaScript 实现图片预览功能
21 0
|
1月前
|
JavaScript 安全 前端开发
js实现复制功能
js实现复制功能
17 0
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项