用原生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元

    共?页,当前?页

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

    相关内容

    热门资讯

    初中毕业的作文600字【优质... 初中毕业的作文600字 篇一初中毕业的感悟初中三年的时光转瞬即逝,仿佛昨天还是一个胆小怯懦的小学生,...
    初中话题作文:战争与和平40... 初中话题作文:战争与和平400字 篇一战争与和平战争是人类社会发展中最为残酷的一种方式,它带来的破坏...
    我的似水年华初中作文800字... 我的似水年华初中作文800字 篇一初中时光如流水般匆匆而过,留下了我许多美好的回忆。回想起这段时光,...
    师生情初一作文800字(通用... 师生情初一作文800字 篇一初中生活中,师生情是一种特殊而珍贵的情感。在我初一的这一年里,我深深地感...
    初中成长作文【精选6篇】 初中成长作文 篇一: 从失败中成长初中生活对于我来说是一个充满挑战和机遇的阶段。在这个阶段,我经历了...
    春节拜年的作文400字(精彩... 春节拜年的作文400字 篇一春节拜年,是中国传统文化中一项重要的习俗。每年农历正月初一,人们会亲朋好...
    我的母亲(精彩4篇) 我的母亲 篇一我的母亲,是我生命中最重要的人。她是一位勤劳、善良而又坚强的女性。在我成长的过程中,她...
    初中想象作文:外面的世界真精... 初中想象作文:外面的世界真精彩 篇一我站在窗前,看着外面的世界,不禁感叹:外面的世界真精彩!我想象着...
    春天初一作文【经典6篇】 春天初一作文 篇一春天初一作文 春天初一作文 篇二春天的美丽景色春天初一作文 篇一春天初一作文春天终...
    真情无价初中优秀作文(推荐3... 真情无价初中优秀作文 篇一真情无价真情无价,是人类最美好的情感之一。它是一种无私奉献、无条件付出的真...
    我最敬佩的人——环卫工人(精... 我最敬佩的人——环卫工人 篇一环卫工人是我最敬佩的人,他们默默无闻地工作,为城市的清洁和卫生付出了巨...
    这不是爱情是感恩初中作文(最... 这不是爱情是感恩初中作文 篇一我们常常在电影、小说中看到爱情的美好,而对于初中生来说,爱情似乎是离我...
    我是超级木头人初中作文(精选... 我是超级木头人初中作文 篇一我是超级木头人我是一名超级木头人,这个称号是我最近才得到的。你可能会好奇...
    初一我的新朋友作文600字【... 篇一:初一我的新朋友初一开学的第一天,我来到了新学校,满怀期待地等待着新的朋友。在新班级里,我遇到了...
    情怀作文800字(通用6篇) 情怀作文800字 篇一怀念那段青葱岁月青春,是一种记忆,也是一种情怀。它仿佛是一朵鲜花,在岁月的长河...
    风筝与风作文(优秀5篇) 风筝与风作文 篇一风筝是一种古老而美丽的飞行器,在人们的童年中扮演着重要的角色。与风紧密相连的风筝,...
    我不再任性了初一作文600字... 我不再任性了初一作文600字5篇 篇一我不再任性了初一的时候,我是一个非常任性的孩子。只要我想要什么...
    初中说明文作文(通用6篇) 初中说明文作文 篇一如何有效地学习数学数学作为一门重要的学科,对于初中生来说是一项必修课程。然而,很...
    初中教育叙事【优选5篇】 初中教育叙事 篇一初中生活的喜怒哀乐初中生活是我人生中最难忘的时光。那是一个充满喜怒哀乐的阶段,每一...
    写人的作文600字初【经典3... 写人的作文600字初 篇一:我的好朋友小明小明是我最好的朋友,他是一个聪明、乐观、有责任心的人。我们...