js下 Day07、DOM案例
一.折叠菜单
效果图:

功能思路分析:
功能一:数据渲染
\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案例的更多相关文章
- 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. ...
- JS对象与Dom对象与jQuery对象之间的区别
前言 通过问题看本质: 举例: js的写法:document.getElementById('save').disabled=true; 在jquery中我是这样写的 $("#save&qu ...
- js中的DOM操作汇总
一.DOM创建 DOM节点(Node)通常对应于一个标签,一个文本,或者一个HTML属性.DOM节点有一个nodeType属性用来表示当前元素的类型,它是一个整数: Element,元素 Attrib ...
- js 字符串转dom 和dom 转字符串
js 字符串转dom 和dom 转字符串 博客分类: JavaScript 前言: 在javascript里面动态创建标准dom对象一般使用: var obj = document.createE ...
- NPM酷库:jsdom,纯JS实现的DOM
NPM酷库,每天两分钟,了解一个流行NPM库. 昨天认识了一个在Node.js环境下操作HTML的库 cheerio,cheerio实现了jQuery接口,用起来十分方便.为什么不直接用jQuery呢 ...
- z-tree官方提供的下拉菜单案例
1.z-tree官方提供的下拉菜单案例 <!DOCTYPE html> <HTML> <HEAD> <TITLE> ZTREE DEMO - selec ...
- 前端(十六)—— JavaScript盒子模型、JS动画、DOM、BOM
JS盒子模型.JS动画.DOM.BOM 一.JS盒模型 1.width | height parseInt(getComputedStyle(ele, null).getPropertyValue(' ...
随机推荐
- 掌握Python可以去哪些岗位?薪资如何?
一.人工智能 Python作为人工智能的黄金语言,选择人工智能作为就业方向是理所当然的,就业前景也还不错.人工智能工程师的招聘起薪一般在20K-35K,如果是初级工程师,起薪一般12K. 二.大数据 ...
- 面试阿里,美团,京东都会被问到的Spring ,从基础到源码帮你全搞定
1 前言 Spring是一个轻量级开源框架,它是为了解决企业应用开发的复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框 ...
- Boom 3D快捷方式,让3D音效应用更便捷
快捷方式是一种快速启动程序.打开程序功能的方法,巧妙地利用快捷键,可以大大加快我们使用Boom 3D的速度,可以让我们更好地享受3D音效. 接下来,就让小编演示一下怎么在不打开Boom 3D的情况下使 ...
- FL Studio采样器设置的功能是什么
FL Studio是一款很集成化的软件,它和很多其他的软件不同,FL Studio的通道中集成了很多采样器.这种整合的方式不但功能强大而且也很便捷.今天小编就来为大家详细的简介下FL Studio采样 ...
- SFTP 服务器cd() 方法和 ls() 方法说明
方法说明: cd():这个方法用于进入某个目录下. 默认情况,当连接SFTP服务器成功后直接进入用户目录,比如我连接自己本机SFTP服务器后进入/Users/mac目录.cd() 方法进入每一个目录都 ...
- python语法元素的名称
变量 什么是变量? """ 变量是保存和表示数据值的一种语法元素,在程序中十分常见.顾名思义,变量的值是可以改变的,能够通过赋值(使用等号"=")方式 ...
- Robot Framework接口自动化案例分享⑦——Jenkins持续集成
一.RobotFramework插件安装 1.Jenkins首页->系统管理->插件管理->可选插件-> 2.搜索robot,点击直接安装 二.任务参数配置 1.新建任务 Je ...
- Django-View中绕过RSCF验证
在Django中对于基于函数的视图我们可以 @csrf_exempt 注解来标识一个视图可以被跨域访问.那么对于基于类的视图,我们应该怎么办呢? 简单来说可以有两种访问来解决 方法一:在类的 disp ...
- node-sass版本问题
node-sass sass-loader的问题 出现了版本的问题 版本太高 版本不兼容解决方法: cnpm i node-sass@4.14.1 cnpm i sass-loader@7.3.1 - ...
- [Windows] Prism 8.0 入门(上):Prism.Core
1. Prism 简介 Prism 是一个用于构建松耦合.可维护和可测试的 XAML 应用的框架,它支持所有还活着的基于 XAML 的平台,包括 WPF.Xamarin Forms.WinUI 和 U ...