JavaScrip实现前端列表分页

2023-10-27

    在一些网站的管理系统中,通常的查询功能会有很多信息,这时候前端如果不分页显示,那么浏览器的长度就会很长。所以通常要进行分页处理。
    对于分页主要有两种方法,第一种方法有后台来进行分页,前端通过请求后台传入分页所需的参数来使后台返回响应的分页结果。第二种方法是有前台来进行分页,后台一次性返回全部结果,前端对这些结果进行分页显示处理。
    下面主要是实现的一个前端分页的效果,先上几张效果图:

分页前

分页前

列表对应的代码

<ul>
                    <li>
                        <div class="news-item">
                            <a class="news-name" href="info/1976/5086.htm" target="_blank">新闻1标题</a>
                            <span class="news-date">2017/12/22<span>
        </div>
   </li>
   <li>
    <div class="news-item">
             <a class="news-name" href="info/1976/4957.htm" target="_blank">新闻2标题</a>
         <span class="news-date">2017/12/12<span>
        </div>
   </li>
   <li>
    <div class="news-item">
             <a class="news-name" href="info/1976/4956.htm" target="_blank">新闻3标题</a>
         <span class="news-date">2017/12/12<span>
        </div>
   </li>
   ...
   ...
   ...
</ul>

如何分页呢?
首先给ul标签加一个id,比如id=”news-lis”,然后在页面合适的位置加上分页操作控件,通过Javascript调整li的隐藏与显示。

分页后效果图
第一页

第二页

分页代码

<!--分页控件,将此代码添加到网页上即可-->
<div  class="c-pages">
    <div class="cp-item">
        <span></span>
        <span id="cp-count">0</span>
        <span></span>
    </div>
    <div class="cp-item">
        <span id="curr-page">1</span>
        <span>/</span>
        <span id="total-page">1</span>
    </div>
    <div class="cp-item">
        <button id="home">首页</button>
        <button id="prev">上页</button>
        <button id="next">下页</button>
        <button id="last">尾页</button>
    </div>
    <div class="cp-item">
        <button id="goTo">转到</button>
        <input type="number" id="goToPage" />
        <span></span>
    </div>
</div>
/**分页js函数,forpage.js,此代码需要链接在html页面底部,同时需要先加载jquery框架**/

// li jquery object array
var newsLis = $("#news-lis").children();

// total news count
var count = newsLis.length;

// max count for one page
var ONE_PAGE_COUNT = 5;

// total pages
var totalPage = parseInt(count / ONE_PAGE_COUNT) + ((count % ONE_PAGE_COUNT) == 0? 0 : 1);

// init page
var currPage = 1;

// function used to set news count
function setUICount(count) {
    if (count == undefined)
        count = 0;
    $("#cp-count").text(count);
}

// function used to set total pages
function setUIPages(totalPage) {
    totalPage = Math.max(1, totalPage);
    $("#total-page").text(totalPage)
}

// update curr page
function setUICurrPage(currPage) {
    currPage = Math.max(1, currPage);
    $("#curr-page").text(currPage);
}

// 传入显示的page参数,显示对应页面的新闻列表,隐藏其他列表
function scanAllForShow(page) {
    // page at least 1 or max totalPage
    page = Math.max(1, Math.min(totalPage, page));
    for (var i = 0;i < count;i++) {
        if (parseInt(i / ONE_PAGE_COUNT) + 1 == page)
            $(newsLis[i]).attr("style", "");
        else
            $(newsLis[i]).attr("style", "display: none");
    }
}

function homePage() {
    currPage = 1;
    scanAllForShow(currPage);
    setUICurrPage(currPage);
}

function nexePage() {
    var last = currPage;
    if (last == totalPage)
        return;

    scanAllForShow(++currPage);

    setUICurrPage(currPage);
}

function prevPage() {
    var next = currPage;
    if (next <= 1) 
        return;

    scanAllForShow(--currPage);

    setUICurrPage(currPage);
}

function lastPage() {
    currPage = totalPage;
    scanAllForShow(currPage);
    setUICurrPage(currPage);
}

function goToPage() {
    var target = $("#goToPage").val();
    if (target == undefined)
        target = currPage;
    target = Math.max(1, Math.min(totalPage, target));
    currPage = target;
    scanAllForShow(target);
    setUICurrPage(currPage);
    $("#goToPage").val("");
}

// 页面加载完成后调用此函数
function init() {
    newsLis = $("#news-lis").children();
    count = newsLis.length;
    totalPage = count / ONE_PAGE_COUNT + ((count % ONE_PAGE_COUNT) == 0? 0 : 1);
    currPage = 1;
    setUICount(count);
    setUIPages(totalPage);
    setUICurrPage(currPage);
    scanAllForShow(currPage);
    // 注册点击函数
    $("#home").click(homePage);
    $("#prev").click(prevPage);
    $("#next").click(nexePage);
    $("#last").click(lastPage);
    $("#goTo").click(goToPage);

}

window.onload = function() {
    init();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScrip实现前端列表分页 的相关文章

  • JavaScript 添加布尔值

    console log true true 2 console log typeof true true number console log isNaN true true false 为什么两个布尔类型相加会产生一个数字 我有点理解 如
  • 位置特征检测:固定

    我正在尝试找到一个脚本来检测设备是否放置position fixed元素相对于视口而不是整个文档 目前 标准桌面浏览器和 Mobile Safari 适用于 iOS 5 都是这样做的 而 Android 设备则相对于整个文档放置固定元素 我
  • Angular.js:如何从无序列表中获取 orderBy 或过滤器来工作?

    尝试根据价格和评级 在返回的对象中 进行排序 我宁愿用 ng click 和 li 来代替使用选择菜单 有没有办法做到这一点 我环顾四周 这是我能想到的最接近的 ul class restaurant filter li i class i
  • 使用 Angular 指令禁用文本选择

    我正在学习 JavaScript 和 AngularJS 我想使用 Angular Directive 禁用文本选择 我有该函数的 JavaScript 代码 function clearSelection if document sele
  • .push() 将多个对象放入 JavaScript 数组中返回“未定义”

    当我将项目添加到beats数组然后console log用户时 我得到了数组中正确的项目数 但是当我检查 length 时 我总是得到 1 尝试调用索引总是会给我 未定义 如下所示 Tom beats 1 我想我错过了一些明显的东西 但这让
  • 如何使用 Playwright 使用选择器查找框架 (iframe)

    我有一个小问题 无法找到使用 Microsoft Playwright 框架的答案 根据您可以使用以下代码获取 iframe const frame page frame frame login 但是如何使用选择器来查找 iframe 并与
  • 通过 JavaScript 获取表单名称

    我有一个简单的问题 但我在网上找不到好的解决方案 我有这个 HTML 代码
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • JavaScript推送函数中的动态变量

    我在 JavaScript 中使用推送功能 var chartData for var i 0 i lt 3 i chartData push date new Date year s mon s date s hr s min s sec
  • 如何使用角度材料在具有可扩展行的表格中创建嵌套垫表

    我有以下数据 id c9d5ab1a subdomain wing domain aircraft part id c9d5ab1a info mimetype application json info dependent parent
  • 如何始终将焦点保持在文本框中

    我创建了一个包含两个 div 的 HTML 页面 左侧的 div 页面的 90 是 ajax 结果的目标 右侧的 div 页面的 10 包含一个文本框 该页面的想法是在文本框中输入零件编号 通过条形码扫描仪 并显示与该零件编号匹配的绘图 显
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • LeafleteachLayer函数不会迭代所有Layer

    使用 GeoJSON 数据数组创建一些标记 getJSON GetLocationsServlet function data L geoJSON data onEachFeature onEachFeature addTo mymap G
  • Highcharts jQuery 渲染问题 - 所有浏览器

    我在尝试使用构建堆积柱形图时遇到了一个奇怪的问题高图表 http www highcharts com 当图表呈现时 在您调整浏览器大小之前 不会显示列无论如何 导致图表重绘 我认为 图表的其余部分显示 轴 标题等 但不显示列本身 我在 I
  • 使用 Enzyme 测试 `React.createRef` api

    我想测试下面的类 它使用React createRef api 不过 快速搜索并没有发现任何这样做的例子 有人成功过吗 我该如何嘲笑裁判 理想情况下我想使用shallow class Main extends React Component
  • 什么是 WKWebView 中的 WKErrorDomain 错误 4

    fatal error LPWebView encounters an error Error Domain WKErrorDomain Code 4 A JavaScript exception occurred UserInfo 0x7
  • Flot 库将 y 轴设置为最小值 0 和最大值 24

    如何将 y 轴设置在 0 到 24 的范围内 这是我的代码 j plot j placeholder d1 xaxis mode time min new Date 2010 11 01 getTime max new Date 2011
  • 如何从 json 文件创建模型? (ExtJS)

    这是我想使用 json 文件创建的模型 Ext define Users extend Ext data Model fields name user id type int name user name type string 为了根据服

随机推荐

  • Ubuntu 20.04无法连接网络(网络图标丢失),重启网络出现Failed to restart network-manager.service

    问题 失去网络图标 这里已经解决 sudo service NetworkManager stop sudo rm var lib NetworkManager NetworkManager state sudo service Netwo
  • 如何按需下载和安装Win10补丁

    如何按需下载和安装Win10补丁 一般我们都是通过系统自带的Windows更新来直接安装补丁 这种方式虽然方便 但是耗时久 而且更新体量也大 会占用很多空间 其实我们完全可以按需下载和安装 下面就给大家介绍方法 工具 原料 Thinkpad
  • Harmony系统更改手机IP

    在当今的互联网环境中 我们经常需要更改手机的IP地址来绕过限制或保护我们的隐私 虽然在一些操作系统上更改IP地址相对较容易 但在Harmony系统上 这可能会有些困难 因此 本文将分享一种在Harmony系统上免费更改手机IP地址的方法 在
  • 【Java SE】继承和多态(保姆级教学)

    点进来你就是我的人了博主主页 戳一戳 欢迎大佬指点 欢迎志同道合的朋友一起加油喔 目录 前言 一 继承 1 什么是继承 2 继承的优缺点 3 对继承的理解 4 方法的重写 5 继承中的构造方法的调用 6 包的声明和使用 7 四种权限修饰符
  • SM3算法设计原理

    SM3密码杂凑算法的描述 SM3密码杂凑算法采用Merkle Damgard结构 消息分组长度为512b 摘要长度256b 压缩函数状态256b 共64步操作步骤 SM3密码杂凑算法的初始值 SM3密码杂凑算法的初始值共256b 由8个32
  • 5G LAN技术专题详解(1)-目录

    相关文章会在公众号同步更新 最近工作忙 更新完公众号后 经常容易忘记再CSDN上再发 公众号上的文章更新的能快一些 各位同学有兴趣可以关注一下 公众号 5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理 保证更新内容的准确性 避
  • VMware Fusion Pro 12 Mac介绍(支持11.0 Big Sur出来啦)

    VMware Fusion 12 出来啦 完美支持macOS Big Sur系统 Fusion 12 包含几项新的更新和改进 包括 eGPU 兼容性 对使用 Kubernetes 构建的基于容器的应用程序的支持 DirectX 11 和 O
  • 计算机软件毕业设计项目源码大全

    给计算机软件相关专业的同学准备了许多毕设项目源码 大家可以下载 找到跟自己类似的 学习下别人的软件是如何做出来的 gitee下载地址 https gitee com chenshuai777 soft 部分截图如下 太多了我就不一一截出来了
  • 数字化项目建设管理难点分析与对策

    企业数字化发展主要以项目建设为依托 通过分阶段 有计划地实施一系列数字化项目 来不断夯实基础设施建设 持续深化业务系统应用 大力推进研发资源服务 稳步提升安全保密防护措施 日益完善运维管理体系 随着企业改革的不断深入 在加快数字化建设进程过
  • 使用随机森林算法编写评分卡模型

    数据来源于信贷用户 数据量级为2W 首先读取数据 忽略警告 import warnings warnings filterwarnings ignore 导入常用库pandas Numpy matplotlib import pandas
  • Linux下如何操作寄存器(用户空间、内核空间方法讲解)

    本期主题 linux下操作寄存器 往期链接 linux设备驱动中的并发 linux设备驱动中的编译乱序和执行乱序 linux设备驱动之内核模块 linux字符驱动 linux字符驱动之ioctl部分 linux字符驱动之read write
  • 深度学习之强调一下数据的重要性

    在深度学习模型的测试过程中 数据集的选择很重要 在构造数据集的时候 要注意做好数据的清洗和标注 一个高质量的数据集往往能够提高模型训练的质量和预测的准确率 在缺乏数据的情况下 可以尝试寻找一些公开数据集 特别是得到公认的被普遍使用的数据集
  • HTML、CSS、JS简单介绍以及HTML的标签

    目录 一 HTML 结构 1 了解网页 2 了解HTML 二 CSS 样式 1 CSS 网页的美容师 2 CSS 的规则 3 CSS的格式 三 JavaScript 行为 1 JavaScript的历史 2 JavaScript的简介 3
  • 小白 / Java面试必知必会系列

    1 Java学习路线推荐 2 Java经典电子版书 3 Java面试必知必会 介绍 本仓库主要讲解Java在面试中的高频考点 分别包含Java基础 Java集合 Java多线程与并发编程 Java虚拟机 数据库 计算机基础 框架和中间件等
  • 在vue中 设置锚点 被固定顶部遮挡的问题

    1 如何设置锚点 点击左侧列表 跳转到页面指定的位置 将页面不同模块设置不同id属性 点击左侧菜单时 采用scrollIntoView 的方式实现 注 我用的是vue3 的 script setup语法糖 的写法 span 颜色 span
  • Diamond软件的使用--(1)软件安装及配置

    此处不推荐使用3 5版本的diamond 会出现RVL抓取数据失败的情况 我个人测试情况是使用3 11以上版本即可避免该情况 故演示采用目前最新的3 12版本 3 12版本 64位 官网链接 简单注册账户即可下载 https www lat
  • jdk8和jkd6去重

    jdk8和jkd6去重 jdk8去重 集合名称newList 去重字段getId 实体类PreFileMakeRangeOutEntity newList newList stream collect Collectors collecti
  • 「完结撒花」使用intel realsense D435i深度相机获取信息,DOBOT MG400机械手实现动态实时抓取,并做了个GUI界面(python实现)

    GUI界面如下 丑是丑了点 但很好用 嘿嘿 GUI部分 1 GUI界面可以实现的功能 暂停 继续相机画面 显示彩色RGB图像 深度图像 开运算结果图 进行图像处理后的图片 右侧 调节opencv轮廓查找框选面积范围 调节图像区域 给dobo
  • [Flex&Bison]协同工作简介

    1 本节主要演示一个简单的模拟bc计算器的程序 主要功能就是解析整型数的四则运算 先给出bison程序 include
  • JavaScrip实现前端列表分页

    在一些网站的管理系统中 通常的查询功能会有很多信息 这时候前端如果不分页显示 那么浏览器的长度就会很长 所以通常要进行分页处理 对于分页主要有两种方法 第一种方法有后台来进行分页 前端通过请求后台传入分页所需的参数来使后台返回响应的分页结果