暑期学JavaScript【第三天】

news2024/9/22 7:39:54

事件流

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

事件捕获

可选参数,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.coloradmin.cn/o/708459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

短视频seo源码部署打包分享---开源

功能概要&#xff1a; 1. 按关键词搜索账号排名 2. 按关键词布局查询视频排名 3. 按天计费功能开发 4. 达标天数及关键词数量统计 开发概要&#xff1a; 区别于其他开发者&#xff0c;同类产品多用第三方&#xff0c;如&#xff1a;站长之家&#xff0c;本系统代码开发使…

| 从头打造个人网站(超详细)

哈喽🤗,这篇博客从0开始教大家创建自己的网站,包含个人网站,商用网站等,并且提供模板类型,提供修改模块样本~ 看完本博客你将会收获: 一个想要的类型网站学习React解答过程中遇到的问题最终效果 那就开始吧👩‍💻👨‍💻 ********************************…

AutoSAR系列讲解(入门篇)4.9-BSW小结

首先&#xff0c;要恭喜各位&#xff0c;最为枯燥难懂的一章你已经看完了。也许现在你还是一头雾水&#xff0c;但是相信大部分人都差不多&#xff0c;不必着急&#xff0c;因为AutoSAR单纯看理论最终也就只能看到这个程度了。所以看不太懂的小伙伴在这里先给自己一个定位&…

POLARDB IMCI 白皮书 云原生HTAP 数据库系统 一 主体架构与接口

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

Python dict keys方法:获取字典中键的序列【将keys转为list】

描述 dict.keys()方法是Python的字典方法&#xff0c;它将字典中的所有键组成一个可迭代序列并返回。 使用示例 >>> list({Chinasoft:China, Microsoft:USA}.keys()) [Chinasoft, Microsoft] >>> test_dict {Chinasoft:China, Microsoft:USA, Sony:Japan,…

JetBrains goland、pycharm、webstorm、phpstorm 对比两文件内容是否一致

对比文件 JetBrains goland、pycharm、webstorm、phpstorm 对比两文件内容是否一致 第一种 打开文件&#xff0c;按住键盘上的CTRL键&#xff0c;然后鼠标右键&#xff0c;点击菜单中的”Compare with Clipboard”&#xff0c;左侧就可以粘贴文件内容对比 第二种 在编辑器窗口中…

MyBatis使用PageHelper插件实现分页查询

1.引入依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.1</version> </dependency>2.在mybatis-config.xml⽂件中配置插件 <plugins><plugin interce…

搭建Home Assistant智能家居系统 - 随时随地控制你的家庭设备「内网穿透」

文章目录 前言1. 安装Home Assistant2. 配置Home Assistant3. 安装cpolar内网穿透3.1 windows系统3.2 Linux系统3.3 macOS系统 4. 映射Home Assistant端口5. 公网访问Home Assistant6. 固定公网地址6.1 保留一个固定二级子域名6.2 配置固定二级子域名 转载自远程穿透的文章&…

用于保护虚拟机数据安全的VMware备份方案!

​什么是有效的VMware备份方案&#xff1f; ​由于操作风险、自然灾害、恶意软件攻击、停电等意外状况的影响&#xff0c;备份VMware虚拟机是很重要的&#xff0c;它可以有效防止出现数据丢失和业务中断的情况。 一般来说&#xff0c;有效的VMware备份方案通常应该具…

pikache靶场通关——SSRF攻击

文章目录 前言环境第一关、SSRF&#xff08;curl&#xff09;Step.1、http协议链接本地文件Step.2、file协议读取C盘下的配置文件Step.3、dict协议扫描内网其他主机的端口开放情况Step.4、使用burp扫描内网其他主机的端口开放情况Step.5、后端源码分析 第二关、SSRF(file_get_c…

09-C++学习笔记-文件操作

&#x1f4da; 输入输出流的概念 在C中&#xff0c;输入输出流是用于在程序和外部设备&#xff08;如键盘、显示器、文件等&#xff09;之间进行数据传输的机制。输入流用于从外部设备读取数据到程序中&#xff0c;输出流用于将程序中的数据输出到外部设备。 C中的输入输出流…

实现自定义exporter

1、实现自定义exporter 1.1 四种常用Metrics 1.1.1 Counter 连续增加不会减少的计数器&#xff0c;可以用于记录只增不减的类型&#xff0c;例如&#xff1a;网站访问人数&#xff0c;系统运行时间等。 对于 Counter 类型的指标&#xff0c;只包含一个increment()的方法&…

Eclipse中的实用工具之JUnit

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于JUnit的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 是什么 为什么要用 怎么用 是什么 JUnit…

奇舞周刊第497期:解锁 PDF 文件:使用 JavaScript 和 Canvas 渲染 PDF 内容

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ 解锁 PDF 文件&#xff1a;使用 JavaScript 和 Canvas 渲染 PDF 内容 最近研究了 Web 的 FileSystemAccess Api&#xff0c;它弥补了 Web 长期以来缺少的能力&#xff1a;操作用户…

《PyTorch深度学习实践》第九讲 多分类问题

b站刘二大人《PyTorch深度学习实践》课程第九讲多分类问题笔记与代码&#xff1a;https://www.bilibili.com/video/BV1Y7411d7Ys?p9&vd_sourceb17f113d28933824d753a0915d5e3a90 二分类问题中计算出 P ( y 1 ) P(y1) P(y1)即可直接得到 P ( y 0 ) P(y0) P(y0)&#xff0…

LeetCode 打卡day46-- 单词拆分和多重背包问题

一个人的朝圣 — LeetCode打卡第46天 知识总结 Leetcode 139. 单词拆分题目说明代码说明 知识总结 今天写了一道题目, 但是还挺难的, 而且是面试高频题目 还过了一遍多重背包问题. 多重背包与01背包的区别在于多重背包限制了物品的个数, 某些物品的个数可能不为1, 可以使用两…

Opencascade源码学习之模型算法_建模算法介绍

Opencascade源码学习之模型算法_建模算法介绍 介绍几何工具相交两曲线相交曲线曲面相交两曲面相交 插值Geom2dAPI_InterpolateGeomAPI_Interpolate 约束的直线和圆约束类型可用的线和圆的类型外部/内部直线的方向两个圆相切给定半径的圆与两个圆相切算法的类型 约束的曲线和曲面…

初识React/JSX

JSX ​​​​​​​推荐使用小括号包裹jsx

【Linux】硬链接 和 软链接

为了方便用户访问文件&#xff0c;Linux提供了一种称为连接&#xff08;link&#xff09;的机制&#xff0c;可以将一个文件或目录与另一个文件或目录建立关联&#xff0c;从而实现多个路径指向同一个文件或目录的效果。 一、概述二、硬链接和软链接详解2.1 硬链接2.11 硬链接的…

ASIC 数字设计:概述和开发流程

概述 集成电路是由硅晶圆&#xff08;wafer&#xff09;切割出来的芯片&#xff08;die&#xff09;组成的。每个晶圆可以切割出数百个芯片。 ASIC是指针对特定应用而设计的集成电路&#xff08;Application Specific Integrated Circuit&#xff09;&#xff0c;与通用的存储器…