WEB APIs (3)

事件对象

事件对象有事件触发时的相关信息,如点击事件中事件对象储存了鼠标点在哪个位置的信息

场景:

用户按下了哪个键,按下回车键可以发布新闻

鼠标点击了哪个元素,从而做哪些操作

参数e为事件对象

常用属性

type

获取当前事件类型

clientX/clientY

获取光标相对浏览器可见窗口左上角位置

offsetX/offsetY

获取光标相对当前DOM元素左上角位置

key

用户按下键盘的值

环境对象

能够分析判断函数运行在不同环境中this所指代的对象

其指的是函数内部特殊的变量this,代表着当前函数运行时所处环境

每个函数里都有this,普通函数里的this指向window

事件所调用的函数this对象指向调用者

回调函数

将函数A作为参数传递给函数B,称函数A为回调函数

fn即为回调函数

表单全选反选案例

选择被勾选的复选框

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport"content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"><title>~</title><link rel="shortcut icon" href="https://www.bilibili.com/favicon.ico"><link rel="stylesheet" href="css/初始化表.css"><link rel="stylesheet" href="css/index.css"><meta name="keywords" content="..." /><style>/*写代码时始终要考虑权重问题!*/@font-face {font-family: 'icomoon';src: url('fonts/icomoon.eot?au9n7q');src: url('fonts/icomoon.eot?au9n7q#iefix') format('embedded-opentype'),url('fonts/icomoon.ttf?au9n7q') format('truetype'),url('fonts/icomoon.woff?au9n7q') format('woff'),url('fonts/icomoon.svg?au9n7q#icomoon') format('svg');font-weight: normal;font-style: normal;font-display: block;}table {border-collapse: collapse;border: 1px solid #c0c0c0;width: 500px;margin: 100px auto;text-align: center;}th {background-color: #09c;font: bold 16px "微软雅黑";color: #fff;height: 24px;}td {border: 1px solid #d0d0d0;padding: 10px;color: #404060;}.allCheck {width: 80px;}</style>
</head><body><table><tr><th class="allCheck"><input type="checkbox" id="checkAll"><span class="all">全选</span></th><th>商品</th><th>商家</th><th>价格</th></tr><tr><td><input type="checkbox" class="ck"></td><td>小米手机</td><td>小米</td><td>¥1999</td></tr><tr><td><input type="checkbox" class="ck"></td><td>小米净水器</td><td>小米</td><td>¥4999</td></tr><tr><td><input type="checkbox" class="ck"></td><td>小米电视</td><td>小米</td><td>¥5999</td></tr></table><script>const checkAll = document.querySelector('#checkAll')const cks = document.querySelectorAll('.ck')checkAll.addEventListener('click', function () {for (let i = 0; i < cks.length; i++) {cks[i].checked = checkAll.checked}})for (let i = 0; i < cks.length; i++) {cks[i].addEventListener('click', function () {checkAll.checked = (document.querySelectorAll('.ck:checked').length===cks.length)})}</script>
</body></html>

两种注册事件

传统on注册(L0)

同一个对象,后面注册的事件会覆盖前面注册(同一个事件)
直接使用null覆盖偶就可以实现事件的解绑
都是冒泡阶段执行的

事件监听注册(L2)

语法: addEventListener(事件类型,事件处理函数,是否使用捕获)
后面注册的事件不会覆盖前面注册的事件(同一个事件)
可以通过第三个参数去确定是在冒泡或者捕获阶段执行
必须使用removeEventListener(事件类型,事件处理函数,获取捕获或者冒泡阶段)
匿名函数无法被解绑

事件流

事件完整执行过程中流动路径

触发事件时,经历两个阶段,捕获阶段,冒泡阶段

事件冒泡

当一个元素的事件被触发时,同样事件将会在该元素所有祖先元素中依次被触发

即当一个元素触发事件后,依次向上调用所有父级元素的同名事件

但我们不需要父类触发事件时,需要阻止冒泡

阻止冒泡

容易导致事件影响到父类元素

把事件限制在当前元素内进行阻止,我们需要拿到事件对象

语法:

事件对象.stopPropagation()

如此即可阻止

事件解绑

如果用L2,使用removeEventListener(事件类型,事件处理函数[获取捕获或冒泡阶段])

注意:匿名函数无法解绑

鼠标经过事件:

mouseover和mouseout 会有冒泡效果

mouseoenter和mouseleave 没有冒泡效果(推荐)

事件委托

利用事件流的特征解决一些开发需求的知识技巧

减少注册次数,提高程序性能

原理利用事件冒泡

给父元素注册事件,当触发子元素时,会冒泡到父元素身上,从而触发父元素的事件

阻止元素默认行为

比如阻止链接、表单域跳转

语法:

e.preventDefault()

其他事件

1.页面加载事件(了解)

加载外部资源(图片、外联和js等)加载完毕时触发的事件

有时候需要等页面资源全部处理完做一些事

事件名:load

使用load可以是js代码写在任意位置,等页面加载完毕再执行

其不光可以监听整个页面加载完毕,可以对某一资源如图片绑定load事件

另一事件:DOMContentLoaded

无需等待样式表、图片等加载完毕,只需HTML文档完全加载和结息完成后即可

2.元素滚动事件

滚动条在滚动时持续触发的事件

检测用户把网页滚动到某个区域后做出一些处理

事件名:scroll

监听整个页面滚动

如监听某元素内部滚动直接给该元素加即可

使用场景

比如滚动一段距离让某些元素隐藏

该距离可让 scroll 检测

scrollLeft和scrollTop

获取被卷去的大小

获取元素内容往左、往上滚出去看不到的距离

可读写(可获取值,也可赋值:如回到顶部)

获取html的元素写法

document.documentElement(返回数字型)

3.元素尺寸与位置

clientWidth和clientHeight(了解)

获取元素可见部分宽高(不包括边框、外边距)

offsetWidth和offsetHeight

获取宽高:

获取元素宽高(包括边框、外边距)

获取数值,方便计算

注意:获取的是可视宽高,如果隐藏,结果为0

获取位置:

offsetLeft和offsetTop(对比绝对定位)

获取元素距离自己定位父类元素的左、上距离

注意:为只读属性

得到位置以谁为准?

带有定位的父级,若没有定位以文档左上角为准

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

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

相关文章

如何用微软画图把1280X720的图片压缩成4:3?

最近在看20多年前的电视剧&#xff0c;视频截图是1280X720&#xff0c;比例失调。 如何压缩成4:3&#xff1f; 4 / 3 W / 720 W 720 X 4 / 3 960 打开画图&#xff0c;调整大学和扭曲&#xff08;Ctrl W&#xff09;&#xff0c;依据选择像素&#xff0c;取消保持纵横比…

【C++】类和对象---const成员,取地址及const取地址操作符重载,static成员

目录 ⭐const成员 ⭐取地址及const取地址操作符重载 ⭐static成员 ⭐概念 ⭐特性 ⭐const成员 将const修饰的“成员函数”称之为const成员函数&#xff0c;const修饰类成员函数&#xff0c;实际修饰该成员函数隐含的this指针&#xff0c;表明在该成员函数中不能对类的任何…

Nginx服务介绍与部署管理

目录 一、Nginx相关介绍 1. 概述 2. 优缺点 3. 零拷贝技术 4. I/O模型相关概念 5. 网络I/O模型 5.1 阻塞型I/O模型 5.2 非阻塞型I/O模型 5.3 多路复用I/O型 5.4 信号驱动式I/O模型 5.5 异步I/O模型 6. 事件驱动模型 7. Nginx与Apache区别 二、Nginx部署和使用 1…

哪些工具可以改变手机电脑网络IP地址?

在互联网时代&#xff0c;网络已经成为了我们日常生活中不可或缺的一部分。然而&#xff0c;随着网络的普及和技术的不断发展&#xff0c;网络安全问题也日益凸显。为了保护个人隐私和信息安全&#xff0c;我们需要了解一些工具可以改变手机电脑网络IP地址的知识。 首先&#x…

【Java面试】MQ(Message Queue)消息队列

目录 一、MQ介绍二、MQ的使用1应用解耦2异步处理3流量削峰4日志处理5消息通讯三、使用 MQ 的缺陷1.系统可用性降低:2.系统复杂性变高3.一致性问题四、常用的 MQActiveMQ:RabbitMQ:RocketMQ:Kafka:五、如何保证MQ的高可用?ActiveMQ:RabbitMQ:RocketMQ:Kafka:六、如何保…

stm32——hal库学习笔记(串口<一>)

这里写目录标题 一、数据通信的基础概念&#xff08;了解&#xff09;1.1&#xff0c;串行/并行通信1.2&#xff0c;单工/半双工/全双工通信1.3&#xff0c;同步/异步通信1.4&#xff0c;波特率1.5&#xff0c;常见的串行通信接口 二、串口(RS-232)&#xff08;熟悉&#xff09…

九州金榜|假期即将结束,如何让孩子快速进入学习状态

临近假期结束&#xff0c;很多孩子都还在沉寂在假期之中&#xff0c;很难收心安心学习&#xff0c;也是在这个时候很多家长都会头疼&#xff0c;孩子不收心就会不可避免影响学习&#xff0c;家长对此也是很无奈&#xff0c;下面九州金榜金榜家庭教育给出以下建议&#xff0c;让…

中科大郝记华教授获2024年F.W.克拉克奖

近日&#xff0c;从国际地球化学学会(Geochemical Society)获悉&#xff0c;中国科学技术大学地球和空间科学学院郝记华教授获得2024年F.W.克拉克奖&#xff08;F.W. Clarke Awards&#xff09;。 图源&#xff1a;国际地球化学学会官网 郝记华教授是首位在中国工作的获奖者。他…

什么是nginx 、安装nginx

一、 什么是nginx 1.1 nginx的概念 一款高新能、轻量级Web服务软件系统资源消耗低对HTTP并发连接的处理能力高单台物理服务器可支持30 000&#xff5e;50 000个并发请求。 1.2 nginx模块与作用 核心模块&#xff1a;是 Nginx 服务器正常运行必不可少的模块&#xff0c;提供错…

ARM处理器运行Windows系统的三防加固平板|亿道三防

大家好&#xff01;今天我要为大家介绍一款引人注目的三防加固平板电脑——亿道三防系列产品。它们采用高通ARM处理器&#xff0c;并能够运行Windows 11操作系统&#xff0c;给用户带来了前所未有的强大性能和多样化的应用体验。 首先&#xff0c;让我们来聊聊这款平板电脑的核…

2024最新版Redis安装使用指南

2024最新版Redis安装使用指南 Installation and Usage Guide to the Latest Redis in 2024 By JacksonML 1. 什么是Redis? The open-source, in-memory data store used by millions of developers as a cache, vector database, document database, streaming engine, an…

星河做市基金会全球DAO社区启动,为数字货币市场注入新活力

2024年的数字货币市场即将迎来一次重要的历史性时刻 — 比特币减半&#xff0c;这四年一次的事件将成为全球数字资产市场的焦点&#xff0c;预示着新一轮的牛市浪潮即将到来。在这个关键时刻&#xff0c;星河做市基金会展现出其作为区块链行业领先市值管理公司的独特魅力。 GA…

初体验 在Dell R7525 服务器 RTX 3090 安装Chat with RTX

理论上是不建议在服务器上安装消费级的显卡&#xff0c;奈何数据中心的显卡需要额外的License才能体验RTX功能或者需要修改模式的方式如 A40 是可以做切换的。 一开始安装是失败的&#xff0c;现在想起来应该是和网络是相关的&#xff0c;所有首先需要做好科学网络才行&#x…

一文了解大数据生态

大数据一词最早指的是传统数据处理应用软件无法处理的过于庞大或过于复杂的数据集。 现在&#xff0c;对“大数据”一词的使用倾向于使用预测分析、用户行为分析或者其他一些从大数据中提取价值的高级数据分析方法&#xff0c;很少用于表示特定规模的数据集。 定义 大数据是…

LeetCode 450.删除二叉搜索树中的节点和669.修建二叉搜索树思路对比 及heap-use-after-free问题解决

题目描述 450.删除二叉搜索树中的节点 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;…

[Android]Frida-hook环境配置

准备阶段 反编译工具:Jadx能够理解Java语言能编写小型的JavaScript代码连接工具:adb设备:Root的安卓机器&#xff0c;或者模拟器 Frida&#xff08;https://frida.re/&#xff09; 就像是你计算机或移动设备的妙妙工具。它帮助你查看其他程序或应用内部发生的事情&#xff0…

pipx — 在隔离环境中安装和运行 Python 应用程序

pipx官网&#xff1a; https://pipx.pypa.io/stable/ pipx pipx 是一个用于安装和运行Python应用程序的工具&#xff0c;它类似于 Linux的 apt 和JavaScript 的 npx 。 pipx和pip的区别&#xff1a; pip是一个通用的python包安装工具pipx专注于安装python cli程序 cli&#…

TLS、运输层安全协议

目录 运输层安全协议 1 协议 TLS 的要点 1.1 协议 TLS 的位置 1.2 TLS 与应用层协议独立无关 1.3 协议 TLS 具有双向鉴别的功能 1.4 TLS 建立安全会话的工作原理 TLS 的握手阶段 TLS 的会话阶段 1.5 TLS 传送的记录格式 2 协议 TLS 必须包含的措施 运输层安全协议 现…

Python urllib模块学习

HTTP协议 HTTP 协议&#xff1a;一般指HTTP(超文本传输)协议。 HTTP是为Web浏览器和Web服务器之间的通信而设计的&#xff0c;基于TCP/IP通信协议嘞传递数据。 HTTP消息结构 客户端请求消息 客户端发送一个HTTP请求到服务器的请求消息包括以下格式 请求行(request line)请求…

mysql 2-20

TEXT类型 枚举类型 SET类型 二进制字符串类型 BLOB类型 注意事项 JSON类型 提取数据 空间类型 选择建议 约束