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);
        }); 

浅浅记录一下。

相关文章
|
2天前
|
JSON 缓存 前端开发
JavaScript 新特性:新增声明命令与解构赋值的强大功能
JavaScript 新特性:新增声明命令与解构赋值的强大功能
|
4天前
|
SQL Web App开发 JavaScript
业务功能常用的JS代码片段
业务功能常用的JS代码片段
12 3
|
11天前
|
移动开发 JavaScript 前端开发
Phaser和Three.js是两个非常流行的JavaScript游戏框架,它们各自拥有独特的核心功能和使用场景
【6月更文挑战第16天】Phaser是开源的2D游戏引擎,适合HTML5游戏,提供物理引擎、图像渲染和资源管理,适用于2D游戏,如消消乐。Three.js是基于WebGL的3D库,用于创建复杂的3D场景和应用,涵盖从游戏到可视化领域的多种用途。两者分别在2D和3D开发中展现强大功能,选择取决于项目需求。
22 8
|
13天前
|
JavaScript 前端开发
JS导出excel功能
JS导出excel功能
|
1天前
|
JavaScript 前端开发
技术经验分享:javascript倒计数功能
技术经验分享:javascript倒计数功能
|
2天前
|
前端开发 JavaScript 安全
解锁 JavaScript ES6:函数与对象的高级扩展功能
解锁 JavaScript ES6:函数与对象的高级扩展功能
|
6天前
|
JavaScript 安全 前端开发
JS实现复制功能
JS实现复制功能
5 0
|
6天前
|
JavaScript 前端开发
JS走马灯小功能制作
JS走马灯小功能制作
6 0
|
10天前
|
前端开发 JavaScript 算法
JavaScript制作简版计算器,提供加减乘除功能
JavaScript制作简版计算器,提供加减乘除功能
12 0
|
14天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的校园竞赛管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的校园竞赛管理系统附带文章源码部署视频讲解等
163 63