一.折叠菜单

效果图:

功能思路分析:

功能一:数据渲染

\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. 【MathType教学】如何让括号内的内容居中

    作为一款非常好用的公式编辑器,MathType它的功能十分强大,不仅包含了大量的数学符号,并且能和Office软件很好地兼容.但是有的时候打出来的公式可能不是自己想要的效果,这时我们就要用一些特别的办 ...

  2. python+requests之接口测试

    最近学习接口测试,测试工具玩的差不多了,想用代码来尝试一下. 发现一个简单的库,requests 一:安装 pip install requests 二:使用 import requests url ...

  3. Centos7 安装python3 pip3

    Centos7 安装python3 pip3 安装python3.6 安装 python36   yum install python36 -y   查看版本 安装完成,查看一下python版本是否正 ...

  4. Java集合【5】-- Collections源码分析

    目录 一.Collections接口是做什么的? 二.Collections源码之大类方法 1.提供不可变集合 2.提供同步的集合 3.类型检查 4.提供空集合或者迭代器 5.提供singleton的 ...

  5. CentOS rsync小结

    前言 与cp,scp不同的是rsync工具不但可以本地拷贝,还可以远程拷贝以及同步数据. rsync工具在做数据备份方便非常受欢迎.试想一下,如果有数千万个文件或目录你怎么样制定拷贝计划呢?每一个选项 ...

  6. BootstrapBlazor 组件库使用体验---Table篇

    原文地址:https://www.cnblogs.com/ysmc/p/13323242.html Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架: 使用 C# 代替 Ja ...

  7. rest-framework 版本控制

    一 作用: 用于版本的控制 二 内置的版本控制类: from rest_framework.versioning import QueryParameterVersioning,AcceptHeade ...

  8. RestTemplate 统一添加 Header

    一.添加拦截器 public class HeaderRequestInterceptor implements ClientHttpRequestInterceptor { private fina ...

  9. Linux之【安装系统后的调优和安全设置】

    关闭SElinux功能 •修改配置文件使其永远生效 第一种修改方法vi vi /etc/sysconfig/selinuc 或者 vi /etc/selinux/config修改: SELINUX=d ...

  10. PyQt(Python+Qt)学习随笔:QStandardItemModel指定行和列创建模型后的数据项初始化的两种方法

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QStandardItemModel通过构造方法 QStandardItemModel(int ro ...