Web API 的第四天

Web API 的第四天

递归函数

递归是函数的高级用法,本质上是函数自已调用自已,它的行为非常类似循环

递归函数的介绍

如果一个函数内部调用自已本身,并且通过条件控制避免陷入死循环,那么我们称这个函数为递归函数。
在这里插入图片描述
递归要加结束条件
在这里插入图片描述
递归函数小例子 ,1-10的和
在这里插入图片描述

递归函数的特性

递归函数有 3 个特征:
 1. 重复执行
 2. 调用自身
 3. 【必须】要有条件控制,避免死循环

递归函数总结
  1. 递归函数介绍
     递归是函数的高级用法,本质上是函数自已调用自已
  2. 递归函数特性
     1. 重复执行
     2. 调用自身
     3. 【必须】要有条件控制,避免死循环

DOM

节点操作

1. 插入节点
 即创造出一个新的网页元素,再添加到网页内,一般先创建节点,然后插入节点
创建元素节点方法: document.createElement(‘标签名’)
在这里插入图片描述
要想在界面看到,还得插入到某个父元素中
 插入到父元素的最后一个子元素
从后添加: 父元素.appendChild(要添加的元素)
在这里插入图片描述
cloneNode会克隆出一个跟原标签一样的元素,括号内传入布尔值
被克隆元素节点.cloneNode(Boolean值)
 若为true,则代表克隆时会包含后代节点一起克隆
 若为false,则代表克隆时不包含后代节点
 默认为false
在这里插入图片描述
插入到父元素中某个子元素的前面
父元素节点.insertBefore(要添加的元素,添加在这个元素的前面)

在这里插入图片描述

发布案例

需求 用户输入内容后 ,点击发布按钮 ul列表里有发布内容
css样式
在这里插入图片描述
1.获取DOM节点
在这里插入图片描述
2.添加事件
在这里插入图片描述
3.1用户点击后,获取输入框内容

在这里插入图片描述

2. 删除节点
若一个节点在页面中已不需要时,可以删除它
 在 JavaScript 原生DOM操作中,要删除元素必须通过父元素删除
如不存在父子关系则删除不成功
父元素.removeChild(被删除的元素节点)
在这里插入图片描述
3. 替换节点
替换节点是指把一个已经存在页面中的元素替换成新的元素
方法一 父级元素.replace(新节点,被替换的旧节点)
方法二 父级元素.innerText = 内容
方法二的innerHTML本质上是修改双标签里面的内容,只不过遇到标签也会解析成元素
在这里插入图片描述
4. 查找节点
父子关系查找:

  1. 获取父节点方法
    parentNode 属性 返回最近一级的父节点 找不到返回为null
    在这里插入图片描述

  2. 获取子节点
     childNodes
     获得所有子节点、包括文本节点(空格、换行)、注释节点等
     children
     仅获得所有元素节点
     第一个子节点和最后一个子节点

关闭二维码案例

css样式
在这里插入图片描述
在这里插入图片描述
1.获取所有按钮
在这里插入图片描述
2.添加点击事件
在这里插入图片描述
3. 方法一: 删除语法 父级.removeChild(被删除的元素)
在这里插入图片描述
4. 方法二: 可以用隐藏实现 在这里插入图片描述
查找兄弟的属性
 previousSibling
 找到上一个兄弟节点,包含文本、注释等节点
prevuisElementSibling
 找到上一个兄弟元素,只找到元素
 nextSibling
 找到下一个兄弟节点,包含文本、注释等节点
 nextElementSibling
 找到下一个兄弟元素,只找到元素

事件流
1. 事件流与两个阶段说明

事件流指的是事件完整执行过程中的流动路径
假设页面里有个div,当触发事件时,会经历两个阶段,
分别是捕获阶段(从根节点到目标节点)、冒泡阶段(从目标节点到根节点)
事件执行 默认都是冒泡阶段执行:
用户触发后代元素,如果父辈们刚好添加了同样事件,按照在冒泡阶段顺序,一次执行他们的事件

2. 事件捕获和事件冒泡

三个阶段:捕获阶段、到达目标、冒泡阶段
事件冒泡是默认存在的 所以触发子元素的时候父元素也会执行
 它指的是:当一个元素触发事件后,会依次向上调用所有父级元素的同名事件
 事件捕获需要写对应代码才能看到效果

3. 阻止事件流动

因为默认就有冒泡模式的存在,所以容易导致事件影响到父级元素
若想把事件就限制在当前元素内,就需要阻止事件流动
阻止事件流动需要拿到事件对象
代码:事件对象.stopPropagation()
此方法可以阻断事件流动传播,不光在冒泡阶段有效,捕获阶段也有效
css代码
在这里插入图片描述
在这里插入图片描述

4. 事件委托

事件委托是利用事件流的特征解决一些开发需求的知识技巧
总结:
事件委托其实是利用事件冒泡的特点,给父级元素加事件
事件对象.target 可以获得真正触发事件的元素

需求 点击各自的按钮 打印btn文字
css样式
在这里插入图片描述
优化写法 事件委托 不是直接注册给btn 注册给父级
应用场景 遇到给一堆元素注册同样事件类型 全部获取 循环注册
找到堆元素公共父级 把事件添加给委托父级上
在这里插入图片描述
鼠标经过事件:
 mouseover 和 mouseout 鼠标移入移出 会有冒泡效果
 mouseenter 和 mouseleave 鼠标移入移出 foucs blus 没有冒泡效果(推荐)
1. 事件流与两个阶段说明
 完整事件的流动过程
 捕获阶段 -> 真正触发事件的元素 -> 冒泡阶段
2. 事件捕获和事件冒泡
 事件捕获是从document一级一级往下到真正触发事件的元素
 事件冒泡是从真正触发事件的元素一级一级往上到document
 默认就有事件冒泡
 捕获必须用L2事件,并第三个参数给true
3. 阻止事件流动
 事件对象.stopPropgation()
4. 事件委托
 利用事件冒泡的特点把事件委托给父级元素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值