一.分页

效果图:

功能思路分析:

分页就是将所有的数据按指定条数分成若干份: 假如有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. NO.A.0002——Git简史及安装教程/创建本地仓库/提交项目到本地仓库/误删还原

    一.Git简史及同类产品对比: 1.git简史:        同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代.Linux 内核开源项目有着为数众广的参与者.绝大多数的 Linu ...

  2. 面试阿里,美团,京东都会被问到的Spring ,从基础到源码帮你全搞定

    1 前言 Spring是一个轻量级开源框架,它是为了解决企业应用开发的复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框 ...

  3. 有什么数据恢复软件可以恢复CF数据

    虽然现在SD卡出现并且日益流行,但是CF卡(Compact Flash)作为一种存储设备,仍然是专业数码相机的主流标准.不仅是数码相机,CF接口还广泛用于PDA.笔记本电脑和包括台式机在内的各种设备. ...

  4. leetcode 56合并区间 java

    //先排序,将左区间小的放在前面,然后如果前一个的右区间大于下一个的左区间,则可以合并,分别用两个下标指向当前的大区间和将要考察的小区间 class Solution {    public int[ ...

  5. 从执行上下文角度重新理解.NET(Core)的多线程编程[2]:同步上下文

    一般情况下,我们可以将某项操作分发给任意线程来执行,但有的操作确实对于执行的线程是有要求的,最为典型的场景就是:GUI针对UI元素的操作必须在UI主线程中执行.将指定的操作分发给指定线程进行执行的需求 ...

  6. Django踩坑记录3

    路径如下: admin.py的代码: from django.contrib import admin from sign.models import Event,Guest # Register y ...

  7. SpringCloud 源码系列(1)—— 注册中心 Eureka(上)

    Eureka 是 Netflix 公司开源的一个服务注册与发现的组件,和其他 Netflix 公司的服务组件(例如负载均衡.熔断器.网关等)一起,被 Spring Cloud 整合为 Spring C ...

  8. volatile禁止重排使用场景与单例模式的Double Check Lock

    普通单例模式Demo public class Demo{ private static Demo INSTANCE; private Demo(){} public static Demo getI ...

  9. 03_Service的绑定

    Start Service启动的Service,Application退出,Service也不会退出: Bind Service启动的Service,Application退出,Service就会退出 ...

  10. Golang自学系列

    为什么会有这个系列? 因为我要往架构方向靠拢啊. 关于架构,其实架构的书我看了<架构整洁之道>,也有<实现驱动领域设计>.但是我感觉明显还不够,所以我在极客时间买了一个架构相关 ...