当前位置:网站首页>DOM系列之事件对象
DOM系列之事件对象
2022-07-21 14:33:00 【老__L】
1、什么是事件对象
eventTarget.onclick = function (event) {
};
eventTarget.addEventListener("click", function (event) {
}); // 这个 event 就是事件对象,我们还喜欢的写成 e 或者 evt
官方解释:event 对象代表事件的状态,比如键盘按键的状态、鼠标的位置、鼠标按钮的状态。
事件发生后,跟事件相关的一系列信息数据的集合都放到这个对象里面,这个对象就是事件对象event,它有很多属性和方法。
比如:
- 谁绑定了这个事件。
- 鼠标触发事件的话,会得到鼠标的相关信息,如鼠标位置。
- 键盘触发事件的话,会得到键盘的相关信息,如按了哪个键。
2、事件对象的使用语法
事件触发发生时就会产生事件对象,并且系统会以实参的形式传给事件处理函数。
所以,在事件处理函数中声明1个形参用来接收事件对象。
eventTarget.onclick = function (event) {
// 这个 event 就是事件对象,我们还喜欢的写成 e 或者 evt
};
eventTarget.addEventListener("click", function (event) {
// 这个 event 就是事件对象,我们还喜欢的写成 e 或者 evt
});
这个 event 是个形参,系统帮我们设定为事件对象,不需要传递实参过去。
当我们注册事件时, event 对象就会被系统自动创建,并依次传递给事件监听器(事件处理函数)。
3、事件对象的兼容性处理
事件对象本身的获取存在兼容问题:
- 标准浏览器中是浏览器给方法传递的参数,只需要定义形参 e 就可以获取到。
- 在 IE6~8 中,浏览器不会给方法传递参数,如果需要的话,需要到 window.event 中获取查找。
解决:
e = e || window.event;
只要“||”前面为 false, 不管“||”后面是 true 还是 false,都返回 “||” 后面的值。
只要“||”前面为 true, 不管“||”后面是 true 还是 false,都返回 “||” 前面的值。
<div>123</div>
<script> var div = document.querySelector("div"); div.onclick = function (e) {
// 事件对象 e = e || window.event; console.log(e); }; </script>
4、e.target 和 this 的区别
- this 是事件绑定的元素, 这个函数的调用者(绑定这个事件的元素)
- e.target 是事件触发的元素。
常情况下terget 和 this是一致的,
但有一种情况不同,那就是在事件冒泡时(父子元素有相同事件,单击子元素,父元素的事件处理函数也会被触发执行),
这时候this指向的是父元素,因为它是绑定事件的元素对象,
而target指向的是子元素,因为他是触发事件的那个具体元素对象。
<div>123</div>
<script> var div = document.querySelector("div"); div.addEventListener("click", function (e) {
// e.target 和 this指向的都是div console.log(e.target); console.log(this); }); </script>
事件冒泡下的e.target和this
<ul>
<li>abc</li>
<li>abc</li>
<li>abc</li>
</ul>
<script>
var ul = document.querySelector("ul");
ul.addEventListener("click", function (e) {
// 我们给ul 绑定了事件 那么this 就指向ul
console.log(this); // u
// e.target 触发了事件的对象 我们点击的是li e.target 指向的就是li
console.log(e.target); // li
});
</script>
5、事件对象的常见属性和方法
后记
如果你感觉文章不咋地
//(ㄒoㄒ)//
,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L;~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※
!!!
边栏推荐
- leetcode 1306. Jumping game III
- leetcode 938. 二叉搜索树的范围和
- 是时候考虑对自己的 App 进行瘦身
- Leetcode brush question: circular linked list and circular linked list II
- Leetcode skimming: middle order traversal of binary trees
- Height collapse and clear float
- Interview problems
- While and do while loops
- YOLOPose实战:手把手实现单阶段的人体姿态估计+代码解读
- 剑指 Offer II 099. 最小路径之和
猜你喜欢
Control of semiconductor refrigeration and heating based on general single chip microcomputer control of cold and hot head in mobile phone radiator massage instrument
同城订单同城送,爆单依旧得心应手!
Leetcode skimming: using stack to realize queue and string decoding
第1集 vmware虛擬機安裝最牛B教程(12天)
第2集 vmware虚拟机安装最牛B教程(13天)
表格表单的样式
Idea connects to MySQL database
leetcode 310. 最小高度树
LeetCode刷题:链表中倒数第k个节点
Episode 1 VMware Virtual Machine installation Best B tutoriel (12 jours)
随机推荐
聚醚/聚丙烯酰胺-竣甲基/聚丙烯酰胺/粒状聚N-异丙基丙烯酰胺壳聚糖水凝胶的制备方法
β-环糊精衍生物接枝羟丙基壳聚糖水凝胶/羧基改性壳聚糖固载环糊精水凝胶微球的制备
相对定位,绝对定位,固定定位,粘滞定位,绝对定位元素布局,层级以及透明效果的设置
LeetCode刷题:反转链表 与 链表中的中间节点
Leetcode brush question: circular linked list and circular linked list II
Episode 1 VMware Virtual Machine installation Best B tutoriel (12 jours)
.net 温故知新:【6】Linq是什么
Redis:主从复制
第2集 vmware虚拟机安装最牛B教程(13天)
酷玩周刊 第 10 期
Seaborn的使用
开户做期货那家公司手续费低 安全
Development of digital collection system -- Construction of mall blind box H5 platform
leetcode 931. Minimum sum of descent path
安装与卸载MySQL的详细步骤
Rotation of 2D conversion, transform origin of 2D conversion center point and scale of 2D conversion
剑指 Offer II 100. 三角形中最小路径之和
创建私有CA,我就用openSSL
Leetcode 539. Minimum time difference
Typora beta expired solution