暑期学JavaScript【第三天】

事件流

很多时候,一个事件可能会被多个元素监听。那么这些元素应该按什么顺序响应呢?从父到子称为捕获,从子到父称为冒泡。
在这里插入图片描述

事件捕获

可选参数,true or fause,带true代表按捕获方式响应

obj.addEventListener('click',function(){},true)

事件冒泡

默认为false,即按冒泡的方式相应

obj.addEventListener('click',function(){})

阻止流动

obj.addEventListener('click',function(e){e.stopPropagation()
})//事件在当前阶段停止流动,冒泡 or 捕获均可

阻止默认行为

有时候跳转链接,提交表单时可能出错,此种情况下不应该跳转,可以阻止默认行为

form.addEventListener('submit',function(e){e.preventDefault()
})

解绑事件

解除事件的绑定

  • L0
btn.onclick() = function(){alert('clicked!')
}
// 解绑
btn.onclick = null
  • L2
    L2的匿名函数无法解绑
btn.addEventListener(‘click’, fun)
btn.removeEventListener('click', fun)

L0 和 L2两种注册方式的区别

在这里插入图片描述

事件委托

说白了,通过给父级元素注册监听器,产生事件的对象会含有若干信息,通过信息确定对父级元素内部哪个元素进行操作。好处是:减少了注册次数,提高了程序性能。将原先循环为每一个子对象进行监听,转为对父对象监听 ,然后内部通过分支语句选择操作的对象。

ul.addEventListener('click', function(e){if(e.target.tagName == 'LI'this.style.color = pink	// this -> ul
})

其他事件

  1. 页面加载事件
    可以将<script> <script>标签放在head里,等待页面加载完毕再执行
<script>window.addEventListener('load',function(){...all codes here...})})
</script>
// 另一种,只需要等待DOM结点加载完毕即可
<script>document.addEventListener('DOMContentLoaded',function(){...some codes here...})})
</script>
  1. 页面滚动事件
    document.documentElement 指的是整个HTML
<script>window.addEventListener('scroll',function(){// 获取整个网页的滚动长度console.log(document.documentElement.scrollTop);})})
</script>
  1. 页面尺寸事件
    当页面尺寸发生变换时触发
window.addEventListener('resize',function(){// codes
})

元素尺寸与位置

  1. 获取元素尺寸
    • clientWidth,clientHeight
      内容 + padding。 不加border值
    <script>const div = document.querySelector('div')console.log(div.clientHeight);</script>
  • offsetWidth, offsetHeight
    内容 + padding + border
    <script>const div = document.querySelector('div')console.log(div.offsetWidth);</script>
  1. 获取元素相对位置
  • offsetLeft、Height
    获得的数值是子元素相距最近的带有定位的父元素的偏移量。如果都没有,以文档左上角为准
  • 总结
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/2736.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AIGC下的CV多模态原理解析:从CLIP/BLIP到stable diffusion/Midjourney、GPT4

前言 终于开写本CV多模态系列的核心主题&#xff1a;stable diffusion相关的了&#xff0c;为何执着于想写这个stable diffusion呢&#xff0c;源于三点 去年stable diffusion和midjourney很火的时候&#xff0c;就想写&#xff0c;因为经常被刷屏&#xff0c;但那会时间错不…

Transformer回归预测

一、Attention is all you need——李沐论文精读Transformer 论文地址&#xff1a; https://arxiv.org/pdf/1706.03762.pdf Transformer论文逐段精读【论文精读】 卷积神经网络对较长的序列难以建模&#xff0c;因为他每次看一个比较小的窗口&#xff0c;如果两个像素隔得比较…

设计模式-05.01-行为型-观察者模板

观察者模式【常用】 我们常把 23 种经典的设计模式分为三类&#xff1a;创建型、结构型、行为型。前面我们已经学习了创建型和结构型&#xff0c;从今天起&#xff0c;我们开始学习行为型设计模式。我们知道&#xff0c;创建型设计模式主要解决“对象的创建”问题&#xff0c;…

大一下暑期计划 + 2023字节青训营预告直播

目录 &#x1f33c;前言 &#x1f339;后端学习方法 &#x1f333;1&#xff0c;层次 &#x1f333;2&#xff0c;体系 &#x1f333;3&#xff0c;算法和数据结构 &#x1f333;4&#xff0c;总结 &#x1f339;前端学习方法 &#x1f333;基础 &#x1f339;求职中如…

第三十五章Java面向对象概念及封装、继承、多态三种特性详解

面向对象简称 OO&#xff08;Object Oriented&#xff09;&#xff0c;20 世纪 80 年代以后&#xff0c;有了面向对象分析&#xff08;OOA&#xff09;、 面向对象设计&#xff08;OOD&#xff09;、面向对象程序设计&#xff08;OOP&#xff09;等新的系统开发方式模型的研究。…

Spring专家课程Day02_Spring-DI

文章目录 一、依赖注入_Autowired1.配置类中Bean 方式注入1.1&#xff09;注入实例1.2&#xff09;自动注入的匹配原则 2.组件扫描实现自动注入 Autowired3.set方法注入 二、接口解耦_自动注入规则1&#xff09;利用接口解耦2&#xff09;Autowired的注入规则3&#xff09;Qual…

Spring Boot中Elasticsearch的连接配置、原理与使用

Spring Boot中Elasticsearch的连接配置、原理与使用 引言 Elasticsearch是一种开源的分布式搜索和数据分析引擎&#xff0c;它可用于全文搜索、结构化搜索、分析等应用场景。在Spring Boot中&#xff0c;我们可以通过Elasticsearch实现对数据的搜索和分析。本文将介绍Spring …

Red Hat宣布限制访问源代码,尚有两种方式可获取

日前Red Hat宣布限制访问Red Hat Enterprise Linux(RHEL)源代码&#xff0c;而此举也将影响AlmaLinux 、Rocky Linux 等下游发行版。 随即Rocky Linux发布了名为《Keeping Open Source Open》的博文。文中是这样说的&#xff1a;    Red Hat的**ERP**服务条款 (TOS) 和最终…

驱动开发:内核读写内存多级偏移

让我们继续在《内核读写内存浮点数》的基础之上做一个简单的延申&#xff0c;如何实现多级偏移读写&#xff0c;其实很简单&#xff0c;读写函数无需改变&#xff0c;只是在读写之前提前做好计算工作&#xff0c;以此来得到一个内存偏移值&#xff0c;并通过调用内存写入原函数…

SpringBoot的日志

SpringBoot的日志 &#x1f50e;日志是什么&#x1f50e;日志的作用&#x1f50e;日志级别日志级别的作用日志级别的分类日志级别的设置 &#x1f50e;打印日志打印日志具体内容划分 &#x1f50e;常用的日志框架为什么这样设计对比System.out.ptintln()与日志框架 &#x1f50…

Observability:如何把 Elastic Agent 采集的数据输入到 Logstash 并最终写入到 Elasticsearch

在之前的文章 “安装独立的 Elastic Agents 并采集数据 - Elastic Stack 8.0”&#xff0c;我们详述了如何使用 No Fleet Server 来把数据写入到 Elasticsearch 中。在今天的文章中&#xff0c;我们来详述如下使用 Elastic Agents 在独立&#xff08;standalone&#xff09;模式…

《诸神之眼:Nmap网络安全审计技术揭秘》读书笔记

《诸神之眼&#xff1a;Nmap网络安全审计技术揭秘》读书笔记 作者&#xff1a;李华峰 ◆ 前言 NSE是Nmap中革命性的创新。通过Nmap强大的脚本引擎&#xff08;NSE&#xff09;&#xff0c;每一个用户都可以向Nmap中添加自己编写的代码&#xff0c;从而将Nmap打造成用户自由定制…