js实现分页功能代码

简介: js实现分页功能代码
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="./jquery-3.6.1.js"></script>
        <title></title>
        <style>
            .tableScroll {
                max-height: 350px;
                position: relative;
                width: 800px;
                overflow: auto;
                -ms-overflow-style: none;
                overflow: -moz-scrollbars-none;
            }
            .tableScroll::-webkit-scrollbar {
                width: 0 !important
            }
            #myTable {
                border: 1px solid #808080;
                color: #fff;
                border-collapse: collapse;
                background-color: #000;
                table-layout: fixed;
                width: 100%;
            }
            #myTable thead {
                text-align: center;
            }
            #myTable thead th {
                border: 1px solid #aaaaff;
                font-weight: 400;
                padding: 0;
                width: 200px;
                box-sizing: border-box;
                height: 50px;
                position: sticky;
                top: -1px;
                background-color: #000;
            }
            #myTable thead th:last-child {
                position: sticky;
                right: -1px;
                z-index: 999;
            }
            #myTbody {
                text-align: center;
            }
            #myTbody tr {
                height: 47px;
            }
            #myTbody tr:nth-child(2n + 1) td {
                background-color: #2e2e2e;
            }
            #myTbody tr:nth-child(2n + 2) td {
                background-color: #000;
            }
            #myTbody td {
                border: 1px solid #aaaaff;
                width: 78px;
                box-sizing: border-box;
                height: 47px;
            }
            #myTbody td.alarm_td {
                width: 720px;
            }
            #myTbody tr td:last-child {
                position: sticky;
                right: -1px;
            }
            .myBlue {
                background-color: #409EFF;
                color: #fff;
            }
            /* 工具栏 */
            .tool {
                display: flex;
                width: 800px;
                margin-left: 100px;
            }
            .selectNum {
                display: flex;
            }
            #pageButton {
                width: 250px;
                height: 50px;
                display: flex;
                align-items: center;
                margin-left: 20px;
            }
            #pageUp,
            #pageDown {
                width: 30px;
                height: 30px;
                margin-right: 10px;
                font-size: 5px;
            }
            .border,
            .currentDiv {
                width: 30px;
                height: 30px;
                line-height: 20px;
                text-align: center;
                margin-right: 10px;
            }
            .selectNum-select {
                width: 70px;
                height: 20px;
                margin-top: 15px;
            }
            .selectNum-input {
                display: flex;
                font-size: 10px;
                margin-top: 20px;
            }
            .pageNum {
                width: 30px;
                margin: 0 10px;
            }
            .btc {
                width: 50px;
                height: 20px;
                margin-top: 20px;
                margin-left: 20px;
                font-size: 10px;
            }
            .btc span {
                font-size: 10px;
            }
        </style>
    </head>
    <body>
        <div class="main">
            <div class="tableScroll">
                <table id="myTable">
                    <thead>
                        <tr>
                            <th style="width:60px;"><input type="checkbox" onchange="selAll()" id="cbAll"></th>
                            <th>ID</th>
                            <th>姓名</th>
                            <th>年龄</th>
                            <th>人数</th>
                            <th>性别</th>
                        </tr>
                    </thead>
                    <tbody id="myTbody">
                        <tr>
                            <td style="width:60px;"><input type="checkbox" onchange="sels()"></td>
                            <td>1</td>
                            <td>张三</td>
                            <td>18</td>
                            <td>5</td>
                            <td>男</td>
                        </tr>
                    </tbody>
                </table>
            </div>
            <div class="tool">
                <span id="page_s">
                    <select id="select_t" class="selectNum-select" onchange="pageNum()">
                        <option value="5">5条</option>
                        <option value="10">10条</option>
                        <option value="15">15条</option>
                        <option value="20">20条</option>
                    </select>
                </span>
                <div id="pageButton"></div>
                <div class="selectNum-button"></div>
                <p class="selectNum-input">前往 <input class="pageNum" type="number" oninput="value=value.replace(/[^\d]/g,'').replace(/^0{1,}/g,'')" value="1" onkeyup="pageKey(event)"> 页</p>
                <button class="btc" onclick="return_bt()"><span>跳转</span></button>
            </div>
        </div>
        <script>
            // 初始化
                        // 获取table表格
                        var myTable = document.getElementById('myTbody');
                        // 获取页数按钮
                        var pageButton = document.getElementById('pageButton');
                        // 获取数组
                        var data = [];
                        // 初始化页数
                        let page = 0;
                        // 初始化列数为5
                        let num = 5;
                        // 请求数据
                        $.ajax({
                            type: "get",
                            url: "./js/new_file.json",
                            data: {},
                            success: function(res) {
                                console.log(res);
                                data = res;
                                renders();
                            }
                        })
                        // 渲染函数
                        function renders() {
                            // 设置每一页的全选状态为初始
                            document.querySelector('#cbAll').checked = false;
                            // 渲染
                            let listStr = "";
                            // 循环i=页数*列数<页数+1乘以列数
                            for (let i = page * num; i < (page + 1) * num; i++) {
                                // 如果数组的下标i不等于未定义
                                if (data[i] != undefined) {
                                    // 渲染数据
                                    listStr += `
                                        <tr>
                                            <td style="width:60px;"><input class="sports" type="checkbox" onchange="sels()"></td>
                                            <td>${data[i].id}</td>
                                            <td>${data[i].name}</td>
                                            <td>${data[i].age}</td>
                                            <td>${data[i].number}</td>
                                            <td>${data[i].xbie}</td>
                                        </tr>
                                    `;
                                }
                            }
                            myTable.innerHTML = listStr;
                            // 渲染左按钮
                            let butStr = `<button id="pageUp" onclick="prev()"><</button>`;
                            // 通过数据的长度/列数=页数
                            let count = Math.ceil(data.length / num);
                            for (let i = 0; i < count; i++) {
                                if(page == i){
                                    butStr += `<button type="button" class="border myBlue" onclick="changeData(${i})">${i + 1}</button>`;
                                }else{
                                    butStr += `<button type="button" class="border" onclick="changeData(${i})">${i + 1}</button>`;
                                }
                            }
                            butStr += '<button id="pageDown" onclick="next()">></button>'
                            pageButton.innerHTML = butStr;
                        }
                        // 上一页
                        function prev() {
                            // 判断页数大于0
                            if (page > 0) {
                                // 页数--
                                page--;
                                // 调用函数
                                renders();
                            } else {
                                // 弹窗 已是最后一页
                                alert("已是第一页");
                            }
                        }
                        // 下一页
                        function next() {
                            let count = Math.ceil(data.length / num);
                            // 如果页数<页数按钮
                            if (page < count - 1) {
                                // 页数++
                                page++;
                                // 调用函数
                                renders();
                            } else {
                                alert("已是最后一页");
                            }
                        }
                        // 跳转指定页数
                        function changeData(i) {
                            page = i;
                            renders();
                        }
                        // 前往第几页
                        function pageNum() {
                            // 页数大于列数+1
                            page > num+1;
                            // 调用函数
                            renders();
                        }
                        // enter鼠标事件
                        function pageKey(e) {
                            // 如果鼠标事件等于13
                            if(e.keyCode == 13){
                                // 实现跳转按钮
                                return_bt();
                            }
                        }
                        // 下拉条数
                        function pageNum(){
                            let set = $("#select_t").find("option:selected").val();
                            num = set;
                            page = 0;
                            renders();
                        }
                        // // 跳转按钮
                        function return_bt(){
                            // 获取前往下标的值
                            let pageNum = document.getElementsByClassName("pageNum")[0].value;
                            // 数量为整数 数据的长度除以列数
                            let count = Math.ceil(data.length / num);
                            // 判断列数不能等于空并且不能未定义
                            if(pageNum != "" && pageNum != null){
                                // 判断列数大于0并且小于
                                if(pageNum > 0 && pageNum <count){
                                    page = pageNum - 1;
                                    renders();
                                }else{
                                    alert("未找到该页面");
                                }
                            }
                        }    
                        // 全选
                        function selAll(){
                            // 获取全选
                            var all = document.querySelector('#cbAll');
                            // 获取单选
                            var sports = document.querySelectorAll('.sports');
                            // 循环单选的长度
                            for(var i = 0; i<sports.length; i++){
                                // 选中单选下标=全选
                                sports[i].checked = all.checked;
                            }
                        }
                        // 单选
                        function sels(){
                            // 获取全选
                            var all = document.querySelector('#cbAll');
                            // 获取单选
                            var sports = document.querySelectorAll('.sports');
                            // 状态为真
                            var flag = true;
                            // 循环单选的长度
                            for (var i = 0; i < sports.length; i++) {
                                // 没有判断到单选下标
                                if (!sports[i].checked) {
                                    // 状态就为假
                                    flag = false;
                                }
                            }
                            all.checked = flag;
                        }
        </script>
    </body>
</html>
相关文章
|
9月前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
11月前
|
JavaScript 前端开发 算法
流量分发代码实战|学会用JS控制用户访问路径
流量分发工具(Traffic Distributor),又称跳转器或负载均衡器,可通过JavaScript按预设规则将用户随机引导至不同网站,适用于SEO优化、广告投放、A/B测试等场景。本文分享一段不到百行的JS代码,实现智能、隐蔽的流量控制,并附完整示例与算法解析。
359 1
|
存储 JavaScript 前端开发
在NodeJS中使用npm包进行JS代码的混淆加密
总的来说,使用“javascript-obfuscator”包可以帮助我们在Node.js中轻松地混淆JavaScript代码。通过合理的配置,我们可以使混淆后的代码更难以理解,从而提高代码的保密性。
1380 9
|
前端开发 JavaScript
【Javascript系列】Terser除了压缩代码之外,还有优化代码的功能
Terser 是一款广泛应用于前端开发的 JavaScript 解析器和压缩工具,常被视为 Uglify-es 的替代品。它不仅能高效压缩代码体积,还能优化代码逻辑,提升可靠性。例如,在调试中发现,Terser 压缩后的代码对删除功能确认框逻辑进行了优化。常用参数包括 `compress`(启用压缩)、`mangle`(变量名混淆)和 `output`(输出配置)。更多高级用法可参考官方文档。
1044 11
|
JavaScript
JS代码的一些常用优化写法
JS代码的一些常用优化写法
219 0
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
移动开发 运维 供应链
通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
array.some()可以用来权限检查、表单验证、库存管理、内容审查和数据处理等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
供应链 JavaScript 前端开发
通过array.every()实现数据验证、权限检查和一致性检查;js数组元素检查的方法,every()的使用详解,array.some与array.every的区别(附实际应用代码)
array.every()可以用来数据验证、权限检查、一致性检查等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
前端开发 JavaScript
8 种技巧让你编写更简洁的 JavaScript 代码
8 种技巧让你编写更简洁的 JavaScript 代码
425 0
8 种技巧让你编写更简洁的 JavaScript 代码