js-前端分页效果的实现

摘要:
本文将介绍前端分页效果的实现,这不是通过使用地址栏的参数实现的,而是通过使用相关公式实现的。

本文将介绍前端分页效果的实现,并没有借助地址栏的参数来实现,利用相关公式来完成。

1、总页数 = Math.ceil(数据长度/每页需要显示的数量);注:向上取整

2、每页显示的数据的开头索引 = 当前页码-1 * 每页需要显示的数量;  注:循环创建的页码索引从0开始,页码从1开始,计算时需要减1

3、每页显示的数据的结束索引 = 当前页码-1 * 每页需要显示的数量 + 每页需要显示的数量;

具体效果图如下所示:

    js-前端分页效果的实现第1张

附上具体实现代码,首先的有一些数据,本案例的数据来自数据库:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        body{
            padding-top: 40px;
        }
        table{
             600px;
            min-height: 100px;
            border: 1px red solid;
            margin: 0 auto;
            border-collapse: collapse;
            text-align: center;
        }
        td,th{
            border: 1px red solid;
            height: 40px;
        }
        p{
            text-align: center;
        }
        p span{
            padding: 2px 5px;
            border: 1px #000 solid;
            font-size: 14px;
            cursor: pointer;
            margin: 0 1px;
        }
        .active{
            background-color: #a9a9cb;
            color: #fff;
        }
    </style>
</head>
<body>
    <table cellpadding='0' cellspacing='0'>
        <thead>
            *<th>编号</th>
            <th>商品名称</th>*
            <th>商品规格</th>
            <th>商品价格</th>*
            <th>库存量</th>*
        </thead>
        <tbody id="tbody">*

        </tbody>
    </table>
    <p id="p">
        
    </p>
</body>
<script>*
    // 初始显示第几页
    var page = 0;*
    var pSpan = '';*
    var res;
    var tbody = document.getElementById('tbody');
    var p = document.getElementById('p');
    var xhr = new XMLHttpRequest();
    xhr.open('get','php/select.php',true);
    xhr.send();
    xhr.onload = function(){
        if(xhr.status == 200){
            res = JSON.parse(xhr.responseText);


            // 第二个参数是一页显示多少个
            Page(res,3);
        }
    }
    // num是一页显示多少个,page指当前第几页
    *function Page(res,num){
        var pageNum = Math.ceil(res.length/num);
        var str = '';
        for(var i=0;i<pageNum;i++){8
    //索引从0开始,页面从1开始,得加1
            str +=`<span>${i+1}</span>`;*
        }
        p.innerHTML = str;
        pSpan = document.querySelectorAll('p span');
        active();
        var str2 = '';
        for(var i=page*num;i<page*num+num;i++){8
            str2 +=`<tr>8
                    <td>${res[i].id}</td>
                    <td>${res[i].name}</td>*
                    <td>${res[i].size}</td>
                    <td>${res[i].price}</td>
                    <td>${res[i].stock}</td>
                </tr>`;
        }
        tbody.innerHTML = str2;
        for(var i = 0;i<pSpan.length;i++){
            pSpan[i].onclick = function(){
                page = parseInt(this.innerHTML-1);*
                active();
                var str2 = '';
                for(var i=page*num;i<page*num+num;i++){
                    if(i<res.length){
                        str2 +=`<tr>*
                            <td>${res[i].id}</td>
                            <td>${res[i].name}</td>*
                            <td>${res[i].size}</td>
                            <td>${res[i].price}</td>
                            <td>${res[i].stock}</td>
                        </tr>`;
                    }
                }
                tbody.innerHTML = str2;
            }
        }
    }

    // 控制选中和未选中的样式,可以修改对于样式
    function active(){
        for(var i=0;i<pSpan.length;i++){*
            pSpan[i].className = '';
        }
        
        pSpan[page].className = 'active';*
    }
</script>
</html>
 
如果有什么问题,欢迎评论区留言哦
 

免责声明:文章转载自《js-前端分页效果的实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Redis系列文章总结:ASP.Net Core 中如何借助CSRedis实现一个安全高效的分布式锁【Android】图片(文件)上传的请求分析结构下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用defined和require引入js

define(function(require, exports, module) { var ceshiTwo ={ dataCeshi:[1,2,3,4,5], arrCeshi:function(){ var _this=this; var array=[]; $.e...

Js/如何修改easyui修饰的input的val值

1.关于js对input值的修改介绍:一般js改变input的val值,我一直使用的方法是: $('#id').val('test');这样的方式来进行修改。但是我使 用了class="easyui-textbox"来对input进行修饰。使用上面的方法就不起作用。 这里改为:$('#id').textbox('setValue', '');...

01 Vue基础

1. vue 概述# Vue:渐进式JavaScript框架 vue官网 https://cn.vuejs.org/v2/guide/ 声明式渲染→组件系统→客户端路由→集中式状态管理→项目构建 易用:熟悉HTML、CSS、JavaScript知识后,可快速上手Vue 灵活:在一个库和一套完整框架之间自如伸缩 高效:20kB运行大小,超快虚拟DOM 2...

原生js操作dom的总结

一.学习DOM之前需要知道的 1.什么是window?  window:是一个全局对象, 代表浏览器中一个打开的窗口, 每个窗口都是一个window对象 2.什么是document?         document是window的一个属性, 这个属性是一个对象         document: 代表当前窗口中的整个网页,         docum...

Js 之移动端富文本插件(wangEditor)

文档:https://www.kancloud.cn/wangfupeng/wangeditor3/332599 下载:https://github.com/wangfupeng1988/wangEditor/releases 一、效果图  二、代码示例 <div id="editorContainer" style="margin-bottom...

GSAP JS基础教程--认识GSAP JS

第一次写博文呢,这次写博客是因为应一位同学的要求,写一下GSAP JS的一个小教程。为什么说小呢?因为它实际上就是小,只是一个入门级的小教程。如果你想问:“那你为什么不写详细一点呢?”,我想说,说.,说..,“因为我也不懂,哈哈”,就是不懂,不骗你们,不懂就是不懂。那我那点英文水平肿么会懂呢? 好吧,言归正传。首先说一下GSAP(GreenSockAni...