js下 Day18、综合案例
一.分页
效果图:

功能思路分析:
分页就是将所有的数据按指定条数分成若干份: 假如有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、综合案例的更多相关文章
- JS 下拉菜单案例
css代码 .nav { width: 300px; height: 400px; list-style: none; padding:; margin: 0 auto; } .nav>li { ...
- js下 Day12、案例
一.垃圾分类 效果图: 功能思路分析: 1. 鼠标按下 (1) 获取鼠标到元素的距离(e.offsetX) (2) 开启开关变量 (3) 获取事件源 (4) 记录垃圾初始位置 2. 鼠标移动 ( ...
- js下 Day11、案例
一.成绩分类 效果图: 功能思路分析: 1. 渲染数据 2. 鼠标按下开启拖拽 \1. 给成绩盒子绑定鼠标按下事件(mousedown),用事件委托做多个标签的拖拽 \2. 开启控制拖拽的变量 \3. ...
- Ext.js入门:常用组件与综合案例(七)
一:datefield简单示例 二:timefield简单示例 三:numberfield简单示例 四:FormPanel提交 datefield简单示例: <html xmlns=&quo ...
- js上 二十、综合案例
二十.综合案例 题目一: **1. ** 数组随机 描述,写randomArray函数,传递一个数组,传递一个数值,返回一个指定个数的随机的新数组,不允许有重复数据 用例: randomArray([ ...
- js上 十九、综合案例
十九.综合案例 题目一: 封装一个函数equal(a1,a2),传入两个一维数组,判断两个数组是否包含相同的元素,如果相等,函数的返回值为true, 不相等,函数的返回值为false 1)例:arr1 ...
- JavaScript:综合案例-表单验证
综合案例:表单验证 开发要求: 要求定义一个雇员信息的增加页面,例如页面名称为"emp_add.htmnl",而后在此页面中要提供有输入表单,此表单定义要求如下: .雇员编号:必须 ...
- 黑马eesy_15 Vue:04.综合案例(前端Vue实现)
黑马eesy_15 Vue:02.常用语法 黑马eesy_15 Vue:03.生命周期 黑马eesy_15 Vue:04.Vue案例(ssm环境搭建) 黑马eesy_15 Vue:04.综合案例(前端 ...
- JQuery:JQuery基本语法,JQuery选择器,JQuery DOM,综合案例 复选框,综合案例 随机图片
知识点梳理 课堂讲义 1.JQuery快速入门 1.1.JQuery介绍 jQuery 是一个 JavaScript 库. 框架:Mybatis (jar包) 大工具 插件:PageHelper (j ...
随机推荐
- vue统计组件库和ui框架
UI组件 element ★13489 - 饿了么出品的Vue2的web UI工具套件 Vux ★8133 - 基于Vue和WeUI的组件库 iview ★6634 - 基于 Vuejs 的开源 UI ...
- 兄弟萌,这份SpringMVC框架学习笔记真的建议反复看,写的太细了
概述 是Spring为展现层提供的基于MVC设计理念的Web框架,通过一套MVC注解,让POJO成为处理请求的控制器,而无需实现任何接口 支持REST风格的URL请求 采用松散耦合的可插拔组件结构,比 ...
- 史上最全!2020面试阿里,字节跳动90%被问到的JVM面试题(附答案)
前言:最近老是收到小伙伴的私信问我能不能帮忙整理出一份JVM相关的面试题出来,说自己在大厂去面试的时候这一块问的是特别多的,每次自己学的时候每次都学不到重点去.这不他来了,一份详细的JVM面试真题给大 ...
- FL Studio水果音乐制作入门教程
"没有早期音乐教育,干什么事我都会一事无成".这并非某位音乐家精心熬制的心灵鸡汤,而是出自物理学家爱因斯坦之口,朋友们没有看错,就是那个被称为二十世纪伟大科学家的爱因斯坦,所以,别 ...
- 再也不用担心问RecycleView了——面试真题详解
关于RecycleView,之前我写过一篇比较基础的文章,主要说的是缓存和优化等问题.但是有读者反映问题不够实际和深入.于是,我又去淘了一些关于RecycleView的面试真题,大家一起看看吧,这次的 ...
- Pytest自动化测试 - 简易教程
简介 pytest是动态编程语言Python专用的测试框架,它具有易于上手.功能强大.可扩展性好.兼容性强.效率高.第三方插件丰富等特点. 功能特征: 完整的文档,包括安装,教程和PDF文档 简单而又 ...
- Java基础教程——Math类
Math Java这种级别的编程语言怎么可能没有数学相关的操作呢? java.lang.Math类提供了基本数学运算的方法. 该类是final的,说明不能被继承. 该类的构造方法是私有的(privat ...
- 浅谈代理模式与java中的动态代理
代理模式的定义: 代理模式是一个使用律非常高的模式,定义如下: 为其他对象提供一种代理,以控制对这个对象的访问. 类图: 简单的静态代理: public interface IRunner{ //这是 ...
- 2020.11最新JAVA环境安装配置
Windows10下java环境配置 更新:2020年11月25日 电脑环境: windows10 64位 一.下载jdk 首先到Oracle网站下载对应操作系统的jdk安装包. https://ww ...
- LeetCode 029 Divide Two Integers
题目要求:Divide Two Integers Divide two integers without using multiplication, division and mod operator ...