用原生js手写分页功能
创始人
2024-05-28 21:22:17
0

分页功能如下:

  1. 数据分页显示,每页显示若干条数据,默认当前页码为第一页。例如:每页5条数据,则第一页显示 1-5 条,第二页显示 6-10 条,依此类推。
  2. 当页码为第一页时,上一页为禁用状态,点击无任何变化。
  3. 当页码为最后一页时,下一页为禁用状态,点击无任何变化。
  4. 正确显示当前页数和总页数。

首先,要显示的数据如下:

// 课外书列表const bookList = [{"name": "带你从入门到实战全面掌握 uni-app","price": 8900},{"name": "初中级前端工程师面试宝典","price": 4900},{"name": "微信公众号开发入门","price": 3900},{"name": "从零入门 React 通关指北","price": 8900},{"name": "Flask 框架基础","price": 9800},{"name": "JavaScript 从零构建音乐播放器","price": 8900},{"name": "微信小程序开发入门","price": 1490},{"name": "SpringBoot+Thymeleaf 开发 BBS 论坛","price": 13900},{"name": "Vue.js 3 + Node.js 实现线上聊天室","price": 8800},{"name": "Express.js 实现前后端分离的博客系统","price": 8900},{"name": "经典项目:前后端分离网盘系统实战","price": 8900},{"name": "21 个实验带你快速开发 Django 博客系统","price":1000},{"name": "React Hook 打造精美在线记账本","price": 8900},{"name":'红楼梦',"price": 5900},{"name": "Three.js 在网页中创建 3D 动画","price": 6400},{"name": "Web 前端高级开发技术","price": 16900}]

html结构如下:

  • 书名:?,一本要10元
  • 书名:?,一本要10元
  • 书名:?,一本要10元
  • 书名:?,一本要10元

共?页,当前?页

我们可以定义当前页数为pageNum,总页数为maxPage,每页显示的数据为limit条。

let pageNum = 1; // 当前页数,默认为1
const limit = 5; // 每页显示多少条数据
const maxPage = Math.ceil(bookList.length / limit); // 最大页数

当前显示数据索引受pageNum和limit影响。

如果是第一页,即pageNum为1时,则显示数据所对应的索引为04;第二页,pageNum为2时,为59;第三页,pageNum为3时,为10~14。

用变量来表示为:(pageNum-1)limit ~ pageNumlimit

所以,我们书写一个更新页面的函数,并在一开始的时候就调用该函数进行初始化页面。

// 更新页面数据(n当前页数)
function updataData(n) {const listGroup = document.querySelector(".list-group")const pagination = document.getElementById("pagination")// 清空所有数据listGroup.innerHTML = ''// 循环遍历每一条数据for (let i = (n - 1) * limit; i < n * limit; i++) {const obj = bookList[i]// 如果有值才添加到元素中。// 防止在最后一页时,数据条数小于limit,获取的obj为undefind,出现报错。obj && (listGroup.innerHTML += `
  • 书名:《${obj.name}》,价格为${obj.price}元
  • `)}// 更新当前页数和总页数pagination.innerHTML = `共${maxPage}页,当前${pageNum}页` }

    在点击下一页按钮时,需要更新当前页数(pageNum++)和当前页面显示的数据(调用updataData函数),最终还要更新按钮的状态,如果已经到了最后一页,则要将下一页按钮的状态设置为无法选中。

    const prev = document.getElementById("prev");
    // 点击下一页
    next.onclick = function () {// 如果当前页是最后一页了,则不做任何操作if (pageNum === maxPage) returnpageNum++updataData(pageNum)next.disabled = pageNum >= maxPage ? true : false
    };
    

    不过这样做有个问题,”上一页”按钮一开始就被设置为disabled,点击下一页,也就是跳转到第2页的时候,此时还是不能点击上一页按钮。

    因此,在点击下一页时,还要根据当前页数,改变上一页按钮的状态,我们可以定义一个函数来实现更新按钮状态。

    // 更新按钮状态
    function updateBtnStatu(pageNum) {prev.disabled = pageNum <= 1 ? true : falsenext.disabled = pageNum >= maxPage ? true : false
    }
    const next = document.getElementById("next");
    // 点击下一页
    next.onclick = function () {// 如果当前页是最后一页了,则不做任何操作if (pageNum === maxPage) returnpageNum++updataData(pageNum)updateBtnStatu(pageNum)};
    

    点击上一页同理。

    // 更新按钮状态
    const prev = document.getElementById("prev");
    // 点击上一页
    prev.onclick = function () {// 如果当前页是第一页,则不做任何操作if (pageNum === 1) returnpageNum--updataData(pageNum)updateBtnStatu(pageNum)
    };
    

    源代码如下:

    
    
    
    • 书名:?,一本要10元
    • 书名:?,一本要10元
    • 书名:?,一本要10元
    • 书名:?,一本要10元

    共?页,当前?页

    最终实现的效果如下:
    请添加图片描述

    相关内容

    热门资讯

    常用商务英语口语   商务英语是以适应职场生活的语言要求为目的,内容涉及到商务活动的方方面面。下面是小编收集的常用商务...
    六年级上册英语第一单元练习题   一、根据要求写单词。  1.dry(反义词)__________________  2.writ...
    复活节英文怎么说 复活节英文怎么说?复活节的英语翻译是什么?复活节:Easter;"Easter,anniversar...
    2008年北京奥运会主题曲 2008年北京奥运会(第29届夏季奥林匹克运动会),2008年8月8日到2008年8月24日在中华人...
    英语道歉信 英语道歉信15篇  在日常生活中,道歉信的使用频率越来越高,通过道歉信,我们可以更好地解释事情发生的...
    六年级英语专题训练(连词成句... 六年级英语专题训练(连词成句30题)  1. have,playhouse,many,I,toy,i...
    上班迟到情况说明英语   每个人都或多或少的迟到过那么几次,因为各种原因,可能生病,可能因为交通堵车,可能是因为天气冷,有...
    小学英语教学论文 小学英语教学论文范文  引导语:英语教育一直都是每个家长所器重的,那么有关小学英语教学论文要怎么写呢...
    英语口语学习必看的方法技巧 英语口语学习必看的方法技巧如何才能说流利的英语? 说外语时,我们主要应做到四件事:理解、回答、提问、...
    四级英语作文选:Birth ... 四级英语作文范文选:Birth controlSince the Chinese Governmen...
    金融专业英语面试自我介绍 金融专业英语面试自我介绍3篇  金融专业的学生面试时,面试官要求用英语做自我介绍该怎么说。下面是小编...
    我的李老师走了四年级英语日记... 我的李老师走了四年级英语日记带翻译  我上了五个学期的小学却换了六任老师,李老师是带我们班最长的语文...
    小学三年级英语日记带翻译捡玉... 小学三年级英语日记带翻译捡玉米  今天,我和妈妈去外婆家,外婆家有刚剥的`玉米棒上带有玉米籽,好大的...
    七年级英语优秀教学设计 七年级英语优秀教学设计  作为一位兢兢业业的人民教师,常常要写一份优秀的教学设计,教学设计是把教学原...
    我的英语老师作文 我的英语老师作文(通用21篇)  在日常生活或是工作学习中,大家都有写作文的经历,对作文很是熟悉吧,...
    英语老师教学经验总结 英语老师教学经验总结(通用19篇)  总结是指社会团体、企业单位和个人对某一阶段的学习、工作或其完成...
    初一英语暑假作业答案 初一英语暑假作业答案  英语练习一(基础训练)第一题1.D2.H3.E4.F5.I6.A7.J8.C...
    大学生的英语演讲稿 大学生的英语演讲稿范文(精选10篇)  使用正确的写作思路书写演讲稿会更加事半功倍。在现实社会中,越...
    VOA美国之音英语学习网址 VOA美国之音英语学习推荐网址 美国之音网站已经成为语言学习最重要的资源站点,在互联网上还有若干网站...
    商务英语期末试卷 Part I Term Translation (20%)Section A: Translate ...