什么是事件对象
eventTarget.onclick = function(event) {} eventTarget.addEventListener('click', function(event) {})
// 这个 event 就是事件对象,我们还喜欢的写成 e 或者 evt
官方解释:event 对象代表事件的状态,比如键盘按键的状态、鼠标的位置、鼠标按钮的状态。
简单理解:事件发生后,跟事件相关的一系列信息数据的集合都放到这个对象里面,这个对象就是事件对象 event,它有很多属性和方法。
比如:
1. 谁绑定了这个事件。
2. 鼠标触发事件的话,会得到鼠标的相关信息,如鼠标位置。
3. 键盘触发事件的话,会得到键盘的相关信息,如按了哪个键。
事件对象的使用语法
- div.onclick=function(event){
- console.log(event);
- }
- div.addEventListener('click',function(e){
- console.log(e)
- })
这个 event 是个形参,系统帮我们设定为事件对象,不需要传递实参过去。
当我们注册事件时, event 对象就会被系统自动创建,并依次传递给事件监听器(事件处理函数)。
代码
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <style>
- div{
- width: 100px;
- height: 100px;
- background-color: pink;
- }
- </style>
- </head>
- <body>
- <div>123</div>
- <script>
- var div=document.querySelector('div');
- div.onclick=function(event){
- console.log(event);
- }
- div.addEventListener('click',function(e){
- console.log(e)
- })
- // 1.event就是一个事件对象 写到我们侦听函数的 小括号里面 当形参俩看
- // 2.事件对象只有有了事件才会存在,它在系统给我们自动创建的,不需要我们传递参数
- // 3.事件对象 是 我们事件的一系列相关数据的集合 跟事件相关的 比如鼠标点击里面就包括鼠标的相关信息,
- // 鼠标坐标啊,如果是键盘事件里面的就包括了键盘事件的信息,比如 用户按下了那个健
- // 4.这个事件对象我们可以自己命名 比如event,evt,e
- </script>
- </body>
- </html>

e.target和this的区别
e.target 返回的是触发事件的对象(元素) this 返回的是绑定事件的对象(元素)
区别 :
e.target 点击了那个元素,就返回那个元素
this 那个元素绑定了这个点击事件,那么就返回谁
-
- <!DOCTYPE html>
- <html lang="en">
-
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta http-equiv="X-UA-Compatible" content="ie=edge">
- <title>Document</title>
- <style>
- div {
- width: 100px;
- height: 100px;
- background-color: pink;
- }
- </style>
- </head>
-
- <body>
- <div>123</div>
- <ul>
- <li>abc</li>
- <li>abc</li>
- <li>abc</li>
- </ul>
- <script>
- // 常见事件对象的属性和方法
- // 1. e.target 返回的是触发事件的对象(元素) this 返回的是绑定事件的对象(元素)
- // 区别 : e.target 点击了那个元素,就返回那个元素 this 那个元素绑定了这个点击事件,那么就返回谁
- var div = document.querySelector('div');
- div.addEventListener('click', function(e) {
- console.log(e.target);
- console.log(this);
-
- })
- var ul = document.querySelector('ul');
- ul.addEventListener('click', function(e) {
- // 我们给ul 绑定了事件 那么this 就指向ul
- console.log(this);
- console.log(e.currentTarget);
-
- // e.target 指向我们点击的那个对象 谁触发了这个事件 我们点击的是li e.target 指向的就是li
- console.log(e.target);
-
- })
- // 了解兼容性
- // div.onclick = function(e) {
- // e = e || window.event;
- // var target = e.target || e.srcElement;
- // console.log(target);
-
- // }
- // 2. 了解 跟 this 有个非常相似的属性 currentTarget ie678不认识
- </script>
- </body>
-
- </html>
阻止默认行为
像a标签里面如果我们设置src属性,默认是又跳转效果的,而我们不想让它执行,此时我们可以阻止默认行为
一般浏览器
preventDefault() 方法
传统方式
return false;
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- </head>
- <body>
- <div>123</div>
- <a href="http://www.baidu.com">百度</a>
- <form action="http://www.baidu.com">
- <input type="submit" value="提交" name="sub">
- </form>
- <script>
- // 常见事件对象的属性和方法
- // 1,返回事件类型
- var div=document.querySelector('div')
- div.addEventListener('click',fn)
- function fn(e){
- console.log(e.type)
- }
- // 2.阻止默认行为(事件)让链接不跳转 或者让提交按钮不提交
- var a=document.querySelector('a')
- a.addEventListener('click',function(e){
- // e.preventDefault(); //dom标准写法
- return false;
- // 我们可以使用return false来阻止默认行为 没有兼容性问题 特点:return 后面的代码是不执行的
- // 而且只限于传统的注册方式
- alert(1)
- })
-
- </script>
- </body>
- </html>