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

浅浅记录一下。

目录
打赏
0
0
0
0
18
分享
相关文章
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
133 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【Javascript系列】Terser除了压缩代码之外,还有优化代码的功能
Terser 是一款广泛应用于前端开发的 JavaScript 解析器和压缩工具,常被视为 Uglify-es 的替代品。它不仅能高效压缩代码体积,还能优化代码逻辑,提升可靠性。例如,在调试中发现,Terser 压缩后的代码对删除功能确认框逻辑进行了优化。常用参数包括 `compress`(启用压缩)、`mangle`(变量名混淆)和 `output`(输出配置)。更多高级用法可参考官方文档。
66 11
盘点原生JS中目前最没用的几个功能API
在JavaScript的发展历程中,许多功能与API曾风光无限,但随着技术进步和语言演化,部分功能逐渐被淘汰或被更高效的替代方案取代。例如,`with`语句使代码作用域复杂、可读性差;`void`操作符功能冗余且影响可读性;`eval`函数存在严重安全风险和性能问题;`unescape`和`escape`函数已被`decodeURIComponent`和`encodeURIComponent`取代;`arguments`对象则被ES6的剩余参数语法替代。这些变化体现了JavaScript不断优化的趋势,开发者应紧跟技术步伐,学习新技能,适应新技术环境。
59 10
【Vue.js】监听器功能(EventListener)的实际应用【合集】
而此次问题的核心就在于,Vue实例化的时机过早,在其所依赖的DOM结构尚未完整构建完成时就已启动挂载流程,从而导致无法找到对应的DOM元素,最终致使计算器功能出现异常,输出框错误地显示“{{current}}”,并且按钮的交互功能也完全丧失响应。为了让代码结构更为清晰,便于后续的维护与管理工作,我打算把HTML文件中标签内的JavaScript代码迁移到外部的JS文件里,随后在HTML文件中对其进行引用。
67 8
带方向感知功能的js图片遮罩层插件
带方向感知功能的js图片遮罩层插件
jQuery多功能滑块插件r-slider.js
r-slider.js是一款jQuery多功能滑块插件。使用该插件,可以制作出滑块、开关按钮、进度条、向导步骤等多种效果。
85 5
|
5月前
|
js实现简洁实用的网页计算器功能源码
这是一款使用js实现简洁实用的网页计算器功能源码。可实现比较基本的加减乘除四则运算功能,界面简洁实用,是一款比较基本的js运算功能源码。该源码可兼容目前最新的各类主流浏览器。
85 2
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
147 1
使用 JavaScript 实现图片预览功能
使用 JavaScript 实现图片预览功能
136 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等