一.分页

效果图:

功能思路分析:

分页就是将所有的数据按指定条数分成若干份: 假如有24条数据,每页只显示5条,则需要分成Math.ceil(24 / 5) = 5页; 每次只显示1页数据,所以需要在总数据中利用slice截取出1页数据渲染

每一页的数据分布如下:

第一页: 显示1 - 5条数据 截取 data.slice(0,5)

第二页: 显示6 - 10条数据 截取 data.slice(5,10)

第三页: 显示11 - 15条数据 截取 data.slice(10,15)

总结:

截取数据的开始下标为 : **( ** 页码-1)*条数

截取数据的结束下标为 : 开始下标+条数

1. 面向对象框架

2. 数据渲染

\1. 封装一个render()方法写渲染,每次渲染的数据不同,通过传参获取

\2. 通过**map().join(‘’)**渲染到指定盒子中

**3. ** 页码渲染

1.封装一个**renderPage()**方法,拿到总页码,总页码 = 数据总条数/每页条数

2.使用for循环渲染页码

3.设置当前页码高亮

**4. ** 页码切换

1.在各种事件中,都需要根据截取的数据,重新调用渲染数据和渲染页码方法,所以封装一个公用的use方法集中调用

2.给页码大盒子绑定点击事件,利用事件委托找到每一个切换分页按钮

3.点击下一页,当前页码++,最大限定,调用渲染方法,传递下一页数据

4.点击上一页,当前页码--,最小为1,调用渲染方法,传递上一页数据

5.点击分页器,当前页码 = 事件源.innerHTML,调用渲染方法,传递数据

5. 条数切换

给条数下拉列表绑定change事件,改变后重新调用渲染,修改当前页码为1

6. 排序

1.给排序下拉列表绑定change事件,使用sort()方法进行排序

2.根据下拉列表的value值进行排序

3.等级是字母需要利用charCodeAt()转码后排序

4.排序后重新调用渲染方法

7. 模糊搜索

\1. 给文本框绑定失去焦点事件blur,根据文本框的内容去筛选数据(filter())

\2. 根据筛选后的数据重新调用渲染方法

#二.今日小结

\1. 分页中截取数据的开始下标为 : **( ** 页码-1)*条数

\2. 分页中截取数据的结束下标为 : 开始下标+条数

\3. 分页中获取页码: Math.ceil(总条数/每页条数)

\4. 数组方法: **filter() ** 筛选 slice()截取 sort()排序

\5. 查找字符串返回布尔值: includes()

#三.作业 -- 楼层

效果图:

功能思路分析:

\1. 自己模拟数据,渲染菜单和列表(每道菜的信息需要包括:图片,标题,价格)

\2. 点击每一道菜出现弹窗,弹窗内显示对应的图片、菜名和价钱(渐隐渐现的动画效果,通过修改opacity实现)

\3. 弹框是用面向对象封装好的,此处只需要new实例化调用

\4. 点击价格,按照价格从高到低对数据进行排序(sort())

\5. 再次点击,按照价格从低到高进行排序

js下 Day18、综合案例的更多相关文章

  1. JS 下拉菜单案例

    css代码 .nav { width: 300px; height: 400px; list-style: none; padding:; margin: 0 auto; } .nav>li { ...

  2. js下 Day12、案例

    一.垃圾分类 效果图: 功能思路分析: 1. 鼠标按下 (1) 获取鼠标到元素的距离(e.offsetX) (2) 开启开关变量 (3) 获取事件源 (4) 记录垃圾初始位置 ​  2. 鼠标移动 ( ...

  3. js下 Day11、案例

    一.成绩分类 效果图: 功能思路分析: 1. 渲染数据 2. 鼠标按下开启拖拽 \1. 给成绩盒子绑定鼠标按下事件(mousedown),用事件委托做多个标签的拖拽 \2. 开启控制拖拽的变量 \3. ...

  4. Ext.js入门:常用组件与综合案例(七)

    一:datefield简单示例 二:timefield简单示例 三:numberfield简单示例 四:FormPanel提交   datefield简单示例: <html xmlns=&quo ...

  5. js上 二十、综合案例

    二十.综合案例 题目一: **1. ** 数组随机 描述,写randomArray函数,传递一个数组,传递一个数值,返回一个指定个数的随机的新数组,不允许有重复数据 用例: randomArray([ ...

  6. js上 十九、综合案例

    十九.综合案例 题目一: 封装一个函数equal(a1,a2),传入两个一维数组,判断两个数组是否包含相同的元素,如果相等,函数的返回值为true, 不相等,函数的返回值为false 1)例:arr1 ...

  7. JavaScript:综合案例-表单验证

    综合案例:表单验证 开发要求: 要求定义一个雇员信息的增加页面,例如页面名称为"emp_add.htmnl",而后在此页面中要提供有输入表单,此表单定义要求如下: .雇员编号:必须 ...

  8. 黑马eesy_15 Vue:04.综合案例(前端Vue实现)

    黑马eesy_15 Vue:02.常用语法 黑马eesy_15 Vue:03.生命周期 黑马eesy_15 Vue:04.Vue案例(ssm环境搭建) 黑马eesy_15 Vue:04.综合案例(前端 ...

  9. JQuery:JQuery基本语法,JQuery选择器,JQuery DOM,综合案例 复选框,综合案例 随机图片

    知识点梳理 课堂讲义 1.JQuery快速入门 1.1.JQuery介绍 jQuery 是一个 JavaScript 库. 框架:Mybatis (jar包) 大工具 插件:PageHelper (j ...

随机推荐

  1. 使用CleanMyMac快速管理应用程序 优化Mac

    CleanMyMac作为一款专业的苹果电脑清理软件,它不仅仅能单纯的卸载不用.少用的应用,同时还支持:1.清理应用程序的数据文件,将应用重置回初始状态,减少空间占用:2.自动检查应用更新,保持应用的最 ...

  2. 细说FL Studio中的Wasp合成器功能

    FL Studio 简称FL,因其Logo像水果,故国人亲切的叫他"水果"本章节采用图文结合的方式给大家讲解FL Studio中的Wasp合成器功能.感兴趣的朋友可以一起来交流哦. ...

  3. FL Studio录制面板作用介绍

    在上一节教程中我们详细的讲解了一下FL Studio录制面板菜单的一些功能,今天我们将继续讲解该面板的知识.具体内容小编这里就不多说了,还是一起来看看吧! 1.录音倒数.该按钮在打开的情况下会在录音前 ...

  4. vulnhub: DC 3

    通过nmap扫描,只开放了80端口,并且该web服务是基于Joomla搭建: root@kali:~# nmap -A 192.168.74.140 Starting Nmap 7.80 ( http ...

  5. leetcode165. 比较版本号

    比较两个版本号 version1 和 version2.如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0 ...

  6. exgcd 学习笔记

    最大公约数 更相减损术:\(\gcd(x,y)=\gcd(x,y-x)(x\leq y)\). 证明: 设 \(\gcd(x,y)=k\),则 \(x=kp,y=kq,\gcd(p,q)=1\). 那 ...

  7. Java基础教程——Date类和Calendar类

    Date类和Calendar类都是关于日期的类,都在java.util包中,使用时需要import. Date java.util.Date类的对象用来表示时间和日期,用得最多的是获取系统当前日期和时 ...

  8. 痞子衡嵌入式:深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是深入i.MXRT1050系列ROM中串行NOR Flash启动初始化流程. 从外部串行NOR Flash启动问题是i.MXRT系列开发最 ...

  9. Django使用联合主键

    今天闲着没事,突然想起一个以前遇到的一个小问题.一直忘了来验证自己的解决方案,所以今天特意来查询了些资料来验证下自己的想法.整理如下: 单张表内建立联合主键: class IotTemp(models ...

  10. 学习工具---maven

    写在前面 为什么要用maven? 作为一跨平台的项目管理工具,它有着以下丰富的应用场景: 作为程序员,有相当一部分时间花在编译.运行单元测试.生成文档.打包.部署和发布等不起眼的工作上,而maven将 ...