【JavaScript】事件绑定、事件解绑、常见事件类型、事件对象

news/2025/1/16 20:09:47/

文章目录

  • 事件
    • 认识事件
    • 事件绑定
      • - DOM 0级 事件
      • - DOM 2级 事件(事件侦听器 事件监听)
    • 事件解绑
      • 解绑dom0级事件
      • 解绑dom2级事件
    • 常见的事件类型
      • 1. 鼠标事件
        • click 鼠标左键点击
        • dblclick 鼠标左键双击
        • contextmenu 鼠标右键单击
        • mousedown 鼠标按下
        • mouseup 鼠标抬起
        • mousemove 鼠标移动
        • mouseover 鼠标移入
        • mouseout 鼠标移出
        • mouseenter 鼠标移入事件
        • mouseleave 鼠标离开
      • 2. 键盘事件
        • keydown 键盘按下事件
        • keyup 键盘抬起
        • keypress 键盘键入事件
      • 3. 浏览器事件
      • 4. 表单事件
        • focus 表单空间获取焦点
        • blur 表单失去焦点
        • change 表单内容改变
        • input 表单输入事件
        • submit 表单提交
        • reset 表单重置
      • 5. 触摸事件
        • touchstart 开始触摸
        • touchmove 触摸移动
        • touchend 触摸结束
      • 6. 拖拽事件
        • dragstart 开始拖拽
        • drag 拖拽移动
        • dragend 拖拽结束
        • dragenter 拖拽元素进入拖放元素范围内触发
        • dragleave 拖拽元素离开拖放元素范围触发
        • dragover 拖拽元素完全进入元素范围内触发
        • drop 拖拽元素在拖放元素范围内放手的时候触发
    • 事件对象
      • 获取事件对象
        • - 标准浏览器
        • - IE浏览器
      • 鼠标事件对象
        • 1. client
        • 2. page
        • 3. offset
      • 鼠标坐标点

事件

认识事件

    事件:捕获用户的行为
事件的三要素1. 事件源          绑定在谁身上的事件2. 事件类型        什么事件3. 事件处理函数     当触发了行为之后,发生的事情eg div.onclick = function() {}事件源    div事件类型  click事件处理函数  function() {}

事件绑定

事件绑定方式

- DOM 0级 事件

        -> 语法   事件源.on事件类型 = 事件处理函数-> 特点   同一个事件源的同一个事件类型只能绑定一个事件处理函数

- DOM 2级 事件(事件侦听器 事件监听)

        -> 语法   事件源.addEventListener('事件类型', 事件处理函数)-> 特点   可以个同一个事件源的同一个事件类型绑定多个事件处理函数,会按照顺序依次触发
  // dom 0级事件var div = document.querySelector("div");//   div.onclick = function () {//     console.log("绑定了一个点击事件");//   };//   div.onclick = function () {//     console.log("再绑定一个事件");//   };// dom 2级事件div.addEventListener("click", function () {console.log("绑定一个点击事件");});function clickFn() {console.log("再绑定一个点击事件");}div.addEventListener("click", clickFn);

事件解绑

解绑dom0级事件

    - 语法  事件源.on事件类型 = null

解绑dom2级事件

    - 语法  事件源.removeEventListener('事件类型', 要解绑的事件处理函数)- 注意  如果用dom2级解绑, 绑定的时候的事件处理函数必须要在外面单独定义,用函数名的形式进行绑定
// 给div绑定0级事件var div = document.querySelector("div");div.onclick = function () {console.log("绑定0级事件");};var btn = document.querySelector("button");btn.onclick = function () {div.onclick = null;};// 给div绑定2级事件
var div = document.querySelector("div");
var clickFn = function () {console.log("绑定dom2级事件");
};div.addEventListener("click", clickFn);
var btn = document.querySelector("button");btn.onclick = function () {div.removeEventListener("click", clickFn);
};

常见的事件类型

1. 鼠标事件

click 鼠标左键点击

dblclick 鼠标左键双击

contextmenu 鼠标右键单击

mousedown 鼠标按下

mouseup 鼠标抬起

mousemove 鼠标移动

mouseover 鼠标移入

mouseout 鼠标移出

mouseenter 鼠标移入事件

mouseleave 鼠标离开

<style>div {width: 100px;height: 100px;background-color: pink;overflow: hidden;}p {padding: 0;margin: 0;width: 50px;height: 50px;background-color: yellow;}</style></head><body><div><p></p></div></body>
<script>/*鼠标事件*/var div = document.querySelector("div");// * 1. click 鼠标左键点击div.onclick = function () {console.log("鼠标左键点击");};// 2. dblclick 鼠标左键双击// 是要是300ms内有两次click就会触发双击div.ondblclick = function () {console.log("鼠标左键双击");};// *  3. contextmenu 鼠标右键单击div.oncontextmenu = function () {console.log("鼠标右键单击");};//  * 4. mousedown 鼠标按下div.onmousedown = function () {console.log("鼠标按下");};// *  5. mouseup 鼠标抬起div.onmouseup = function () {console.log("鼠标抬起");};// * 6. mousemove 鼠标移动div.onmousemove = function () {console.log("鼠标移动");};// 7. mouseover 鼠标移入// 注意  mouseover 和 mouseout 在鼠标移入到子元素上依然可以触发div.onmouseover = function () {console.log("鼠标移入");};//   // 8. mouseout 鼠标移出div.onmouseout = function () {console.log("鼠标移出");};// * 9. mouseenter 鼠标移入事件mouseenter 和 mouseleave 在鼠标移入子元素的时候,不会触发div.onmouseenter = function () {console.log("鼠标移入事件");};// *  // 10. mouseleave 鼠标离开div.onmouseleave = function () {console.log("鼠标离开");};
</script>

2. 键盘事件

keydown 键盘按下事件

keyup 键盘抬起

keypress 键盘键入事件

    - 可以给所有元素绑定键盘事件, 不是所有元素都能触发键盘事件- 一般给 window/document/表单元素 绑定键盘元素- 键盘事件不考虑中文
var inp = document.querySelector("input");// 1. keydown 键盘按下事件inp.onkeydown = function () {console.log("键盘按下事件");};// 2. keyup 键盘抬起inp.onkeyup = function () {console.log("键盘抬起");};// 3. keypress 键盘键入事件// 注意  按下的内容必须和出现的内容一致inp.onkeypress = function () {console.log("键盘键入事件");};

3. 浏览器事件

4. 表单事件

focus 表单空间获取焦点

blur 表单失去焦点

change 表单内容改变

input 表单输入事件

submit 表单提交

reset 表单重置

<body><form action="./00-回顾.html"><!-- <input type="text" /> --><input type="text" value="小花" /><button type="submit">提交</button><button type="reset">重置</button></form></body>
<script>/*表单事件*/var inp = document.querySelector("input");var form = document.querySelector("form");// 1. focus 表单空间获取焦点//   inp.onfocus = function () {//     console.log("表单空间获取焦点");//   };//   // 2. blur 表单失去焦点//   inp.onblur = function () {吃饭啦//     console.log("表单失去焦点");//   };// 3. change 表单内容改变// 注意  文本框 要求获取焦点和失去焦点内容不一样的时候会触发//   inp.onchange = function () {//     console.log("表单内容改变");//   };// 4. input 表单输入事件// 注意  只要输入或删除就会触发//   inp.oninput = function () {//     console.log("表单输入事件");//   };// 表单 提交 和 重置 都必须绑定在form表单域上面// 5. 表单提交 submitform.onsubmit = function () {console.log("表单提交");// 禁止默认行为  刷新页面return false;};// 6. 表单重置 resetform.onreset = function () {console.log("表单重置");};
</script>

5. 触摸事件

touchstart 开始触摸

touchmove 触摸移动

touchend 触摸结束

var div = document.querySelector("div");// 1. touchstart 开始触摸
div.ontouchstart = function () {console.log("开始触摸");
};// 2. touchmove 触摸移动
div.ontouchmove = function () {console.log("触摸移动");
};// 3. touchend 触摸结束
div.ontouchend = function () {console.log("触摸结束");
};

6. 拖拽事件

dragstart 开始拖拽

drag 拖拽移动

dragend 拖拽结束

dragenter 拖拽元素进入拖放元素范围内触发

dragleave 拖拽元素离开拖放元素范围触发

dragover 拖拽元素完全进入元素范围内触发

drop 拖拽元素在拖放元素范围内放手的时候触发

拖拽事件
- 拖拽关联两个元素
1. 拖拽元素 正在拖着的元素
2. 拖放元素 将要松手放置的元素
- 如何让一个元素可以被拖拽
置一个属性 draggable = ‘true’

 <style>div {width: 200px;height: 200px;background-color: pink;}p {width: 300px;height: 300px;background-color: green;}</style></head><body><!-- 设置  draggable 属性 让元素可以拖拽 --><div draggable="true"></div><p draggable="true"></p></body>
<script>var div = document.querySelector("div");var p = document.querySelector("p");// 1. dragstart 开始拖拽//   div.ondragstart = function () {//     console.log("开始拖拽");//   };//   // 2. drag 拖拽移动//   div.ondrag = function () {//     console.log("正在拖着走");//   };//   // 3. dragend 拖拽结束//   div.ondragend = function () {//     console.log("拖拽结束");//   };// 4. dragenter 拖拽元素进入拖放元素范围内触发//   p.ondragenter = function () {//     console.log("把别的元素拖进来");//   };//   // 5. dragleave 拖拽元素离开拖放元素范围触发//   p.ondragleave = function () {//     console.log("把别的元素拖走了");//   };// 6. dragover 拖拽元素完全进入元素范围内触发p.ondragover = function () {console.log("拖进来了");// 阻止默认行为return false;};// 7. drop  拖拽元素在拖放元素范围内放手的时候触发// 注意  如果想要让drop事件生效, 需要阻止 dragover事件的默认行为p.ondrop = function () {console.log("把元素拖进来撒手");};
</script>

事件对象

    - 当事件行为发生的时候,浏览器主动记录的一个对象数据,内部存储了关于本次事件的相关信息

获取事件对象

- 标准浏览器

        在事件处理函数有一个参数,参数就是事件对象

- IE浏览器

        IE浏览器天生有一个事件对象 window.event
<style>div {width: 200px;height: 200px;background-color: pink;}</style></head><body><div></div>
</body>
<script>var div = document.querySelector("div");// 标准浏览器div.onclick = function (e) {console.log(e);};// IE 浏览器事件对象div.onclick = function () {console.log(window.event);};// 兼容性操作div.onclick = function (e) {var e = e || window.event;};
</script>

鼠标事件对象

1. client

        - 语法 entX事件对象.clientY- 光标相对于浏览器可视窗口左上角的坐标点

2. page

        - 语法 eX事件对象.pageY- 光标相对于文档流左上角的坐标点

3. offset

        - 语法 setX事件对象.offsetY- 光标相对于 准确触发事件的元素 左上角的坐标点
<style>* {margin: 0;padding: 0;}div {width: 200px;height: 300px;background-color: pink;margin: 100px;margin-top: 700px;}
</style>
<body><div></div>
</body>
<script>var div = document.querySelector("div");div.onclick = function (e) {// 光标相对于浏览器可视窗口左上角的坐标点console.log("e.clientX, e.clientY");console.log(e.clientX, e.clientY);console.log("==========================");// 光标相对于文档流左上角的坐标点console.log("e.pageX, e.pageY");console.log(e.pageX, e.pageY);console.log("==================");//  光标相对于 准确触发事件的元素 左上角的坐标点console.log("e.offsetX, e.offsetY");console.log(e.offsetX, e.offsetY);};
</script>

鼠标坐标点

// 0 获取元素
var xBox = document.querySelector(".x");
var yBox = document.querySelector(".y");document.onmousemove = function (e) {var x = e.clientX;var y = e.clientY;// 把 x 和 y 放到span中xBox.innerHTML = x;yBox.innerHTML = y;
};

http://www.ppmy.cn/news/841143.html

相关文章

如果企业微信不用了怎么解绑手机?

当员工离职或是企业要更换移动办公软件时&#xff0c;希望能够解绑企业微信的手机号&#xff0c;那么该如何操作呢&#xff1f; 前言 虽然市面上有很多移动办公软件&#xff0c;但自从腾讯推出企业微信这款移动办公软件后&#xff0c;不少用户被它专有的客户运营功能所吸引&am…

Apple ID密保问题是个梗之重置密保成功终极方案

一、回顾二、死马当活马医三、注意点尾声 一、回顾 如果不知道上集是什么的&#xff0c;详情可以浏览Apple ID密保问题是个梗&#xff0c;总结的来说&#xff0c;就要更新开发者许可协议的时候&#xff0c;AppleID需要绑定手机号。对于无救援邮箱&#xff0c;完全记不清一丁…

微信解绑手机号服务器会保留吗,微信怎么解绑手机号?微信还能解绑手机号吗?...

如今微信推广越来越火&#xff0c;微信自从17年更新了新版以后&#xff0c;据说不能解绑手机号了&#xff0c;是有时间限制吗?那么微信怎么解绑手机号呢?针对这问题&#xff0c;小编为大家讲讲&#xff0c;希望对您有用。 1.打开微信&#xff0c;进入聊天页面&#xff0c;然后…

wx号怎么强制解绑手机号

话不多说&#xff0c;切入正题 1.设置一个好记的微信号 2至少设置3个紧急联系人 3开通微信支付并绑一张银行卡 4申诉找回微信密码。一定选择我不记得微信号 5.选择不记得微信号&#xff0c;填入绑定的手机号&#xff0c;等待申诉。 5a若申诉成功&#xff0c;使用微信号加新密码…

解绑

#include <iostream>int main() { std::ios::sync_with_stdio(false); std

更换手机后要解绑的账号全集

很多时候不得已会换手机号码&#xff0c;在互联网普及的今天&#xff0c;你会遇到一个特别头痛的事&#xff0c;别问我是怎么知道的&#xff0c;收了100短信验证码 下面就根据网上的一些参考和自己的经验&#xff0c;总结一下更换手机后要解绑的账号&#xff1a; 社交&#xf…

更换手机号需要考虑的解绑对象

出行&#xff1a;12306官方、智行火车票12306、滴滴、OFO&#xff08;小黄车&#xff09;、HelloBike&#xff08;小白&#xff09; 支付&#xff1a;支付宝、微信、qq钱包、工商银行、农业银行&#xff08;更换绑定手机号&#xff09; 外卖&#xff1a;饿了么、口碑、大众点…

微信6.5.7手机号码如何解绑

在2017年02月份的时候我们的微信还是可以正常的绑定与解绑手机号码&#xff0c;自从03月份的时候&#xff0c;微信更新完&#xff1b;我发现不能正常进行手机号码解绑了&#xff0c;这个时候我也尝试了很多方法&#xff0c;在之前很多的方法中&#xff0c;还是没有完成&#xf…