一.折叠菜单

效果图:

功能思路分析:

功能一:数据渲染

\1. 模拟数据,一级数据为数组套对象的形式,二级数据为数组;

\2. 先渲染一级数据,然后再嵌套渲染二级数据(map().join(‘’));

功能二:子菜单的显示隐藏

\1. 定义一个初始下标index = 0;

\2. 给每一个一级菜单绑定点击事件,点击一级菜单时要干三件事:

(1) 上一个二级菜单隐藏

(2) 修改为当前点击项的下标

(3) 当前点击项的二级菜单显示

#二.留言板

效果图:

功能思路分析:

功能一:头像高亮

\1. 给每一个头像绑定点击事件,通过active类名的切换实现头像高亮显示

\2. 记录图片路径,后面发表留言要用。

功能二: 发表留言

\1. 点击广播按钮发布留言,但是需要满足二个条件才能发表留言:

(1) 用户名文本框必须有内容( user.value.trim().length > 0 )

(2) 内容框文必须有内容( user.value.trim().length > 0 )

\2. 以上条件为真后要做的事情

(1) 调用发表留言的方法

(2) 调用初始化方法(清空文本框等)

(3) 发表成功数量加1

功能三:删除留言

\1. 在留言发表成功后调用删除留言的方法( 动态创建的元素必须在创建之后才能找到 );

\2. 找到删除按钮,绑定点击事件,将整条评论删除( removeChild() )

功能四:统计字数

​ 通过input事件监听内容文本框的输入,剩余字数 = 总字数 - 文本框内容长度

#三.今日小结

1.监听文本框输入事件: input

2.类名的添加和删除: classList.add() classList.remove()

3.节点的创建和删除: document.appendChild() document.removeChild()

4.下一个元素兄弟: nextElemenSibling

5.DOM2级事件绑定: **addEventListener( ** ‘事件类型’,function(){})

#四.作业 -- 三级菜单

效果图:

效果图

功能要求:

\1. 鼠标经过菜单高亮显示,具体样式参考录屏演示

\2. 点击+号可以展开(显示)子菜单

\3. 点击-号可以折叠(隐藏)子菜单

\4. 注意展开与折叠时找到对应关系,点击一级菜单,二级菜单发生切换,点二级三级子菜单发生切换

js下 Day07、DOM案例的更多相关文章

  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. JS对象与Dom对象与jQuery对象之间的区别

    前言 通过问题看本质: 举例: js的写法:document.getElementById('save').disabled=true; 在jquery中我是这样写的 $("#save&qu ...

  5. js中的DOM操作汇总

    一.DOM创建 DOM节点(Node)通常对应于一个标签,一个文本,或者一个HTML属性.DOM节点有一个nodeType属性用来表示当前元素的类型,它是一个整数: Element,元素 Attrib ...

  6. js 字符串转dom 和dom 转字符串

    js 字符串转dom 和dom 转字符串 博客分类: JavaScript   前言: 在javascript里面动态创建标准dom对象一般使用: var obj = document.createE ...

  7. NPM酷库:jsdom,纯JS实现的DOM

    NPM酷库,每天两分钟,了解一个流行NPM库. 昨天认识了一个在Node.js环境下操作HTML的库 cheerio,cheerio实现了jQuery接口,用起来十分方便.为什么不直接用jQuery呢 ...

  8. z-tree官方提供的下拉菜单案例

    1.z-tree官方提供的下拉菜单案例 <!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - selec ...

  9. 前端(十六)—— JavaScript盒子模型、JS动画、DOM、BOM

    JS盒子模型.JS动画.DOM.BOM 一.JS盒模型 1.width | height parseInt(getComputedStyle(ele, null).getPropertyValue(' ...

随机推荐

  1. Mac太卡了怎么办?用CleanMyMac四招让它飞起来

    许多小伙伴使用Mac后都反馈电脑不如想象中的流畅,甚至有点卡顿的现象,原因可能是因为无用的应用占据了过多的内存,或者是系统盘垃圾过多,导致的电脑卡顿现象. 今天小编教给大家几招,让自己的Mac能够一键 ...

  2. elasticsearch 使用同义词

    elasticsearch 使用同义词 使用环境 elasticsearch5.1.1 kibana5.1.1 同义词插件5.1.1 安装插件 下载对应的elasticsearch-analysis- ...

  3. leetcode137. 只出现一次的数字 II

    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次.找出那个只出现了一次的元素.说明:你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗?示例 1:输入: [2,2 ...

  4. distinct关键字

    对于distinct关键字,distinct关键字应用于所有列而不仅是前置它的列,如果给出多个列,将会比较两个列. 这是完整表, 首先是select distinct username from us ...

  5. python的os命令

    os常用命令 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'. os.g ...

  6. C语言精华——内存管理,很多学校学习不到的知识~

    在编写程序时,通常并不知道需要处理的数据量,或者难以评估所需处理数据量的变动程度.在这种情况下,要达到有效的资源利用--使用内存管理,必须在运行时动态地分配所需内存,并在使用完毕后尽早释放不需要的内存 ...

  7. 如何实现一个简易版的 Spring - 如何实现 Setter 注入

    前言 之前在 上篇 提到过会实现一个简易版的 IoC 和 AOP,今天它终于来了...相信对于使用 Java 开发语言的朋友们都使用过或者听说过 Spring 这个开发框架,绝大部分的企业级开发中都离 ...

  8. VS2019配置C+++mingW32配置

    两个安装教程博客 http://t.sg.cn/yq22mn http://t.sg.cn/wsavo0 基于调试报错,是因为文件夹是中文,贴一个详细的博客:http://t.sg.cn/3j5e4z

  9. C#:终于有人把 ValueTask、IValueTaskSource、ManualResetValueTaskSourceCore 说清楚了!

    目录 1,可用版本与参考资料 2,ValueTask 和 Task 3,编译器如何编译 4,ValueTask 有什么优势 5,ValueTask 创建异步任务 6,IValueTaskSource ...

  10. String、StringBUffer和StringBuilder的区别与使用

    一.区别 String是一个不可变的类,即创建String对象后,该对象中的字符串是不可变的,平时我们改变String对象中的字符串实际上是通过StringBuffer实现的,所以StringBuff ...