JavaScript 事件
事件
浏览器窗口,文档等发生的一些特定的交互瞬间。对于 Web 应用来说,有下面这些代表性的事件:点击某个元素、将鼠标移动至某个元素上方、关闭弹窗等等。
JavaScript 是以事件驱动为核心的一门语言。JavaScript 与 HTML 之间的交互是通过事件实现的。
事件
冒泡阶段:从下往上进行事件冒泡: p =>div => body => html,把事件一点一点向父元素传递。
事件监听
事件监听就是DOM对事件进行监听,知道什么时候发生了这个事件,从而执行一些写好的程序。
传统事件侦听 <button id="btn">事件侦听</button> var btn = document.getElementById('btn') btn.onclick = function () { console.log("事件侦听") } btn.onclick = function() { console.log("删除事件侦听") btn.onclick = null }
addEventListener() 事件侦听
addEventListener() 方法用于向指定元素添加监听事件。同一个元素可以添加多个侦听器(事件处理程序),配合 removeEventListener() 方法来移除事件。
参数一、事件名称,字符串,必填。
事件名称不用带 "on" 前缀,点击事件直接写:"click",键盘放开事件写:"keyup"
参数二、执行函数,必填。
填写需要执行的函数,如:function(){代码...}
当目标对象事件触发时,会传入一个事件参数,参数名称可自定义,如填写event,不需要也可不填写。 事件对象的类型取决于特定的事件。例如, “click” 事件属于 MouseEvent(鼠标事件) 对象。
function(event){console.log(event)}
参数三、触发类型,布尔型,可空
true - 事件在捕获阶段执行
false - 事件在冒泡阶段执行,默认是false
addEventListener() 有三个参数 1. 事件名称,字符串,必填。事件名称不用带 "on" 前缀,直接写事件名称。 2. 执行函数。 3. 触发类型,布尔型,可空。 true - 事件在捕获阶段执行 false - 事件在冒泡阶段执行,默认是false <button id="btn">事件侦听</button> var btn = document.getElementById('btn') btn.addEventListener('click', function() { console.log("addEventListener事件侦听") }, false )
()
<button id="btn">事件侦听</button> var btn = document.getElementById('btn') btn.addEventListener('click', fn) function fn() { console.log("删除事件") btn.removeEventListener('click', fn) }
事件对象本质是对象,这个对象中里有事件触发时的相关的信息。
比如:鼠标点击事件的时候,事件对象中就保存了鼠标点在哪个位置的信息。
<button id="btn">事件对象</button> var btn = document.getElementById('btn') btn.addEventListener('click', fn) function fn(e) { console.log("事件对象", e) }
事件对象 e 属性
e.target :返回当前事件触发的元素。
e.type :返回当前事件类型,此属性只读。
e.preventDefault:阻止元素的默认事件。
e.stopPropagation:阻止事件冒泡。
clientY:
e.pageX:
e.pageY:
screenX:相对电脑屏幕的 。
screenY:相对电脑屏幕的 。
e.currentTarget:返回当前事件触发的节点。
e.wheelDelta( 滚轮事件特有属性 ):返回鼠标滚轮滚动方向,鼠标往上滚为 120,鼠标往下滚为 -120。
e.key(键盘事件):返回 键盘所按的某一个键。
e.keyCode(键盘事件):返回 对应的ASCll码值。
鼠标类型
click | 鼠标点击触发 |
mouseover | 鼠标经过触发 |
mouseout | 鼠标离开触发 |
mousemove | 鼠标移动触发 |
mouseup | 鼠标弹起触发 |
mousedown | 鼠标按下触发 |
contextmenu | 鼠标右击触发 |
dblclick
|
鼠标双击触发 |
mousewheel
|
鼠标滚轮滚动触发 |
表单事件
focus | 输入框获得鼠标焦点触发 |
blur | 输入框失去鼠标焦点触发 |
change | 元素发生变化时触发 |
input | 输入框值改变触发 |
select
|
选中输入框值时触发 |
键盘事件
keyup | 表单中,键盘弹起触发 |
keydown | 表单中,键盘按下触发 |
keypress | 表单中,键盘按下触发(不能识功能键) |
浏览器窗口事件
load | 页面加载,当文档内容完全加载完成后触发 |
resize | 宽口大小发生变化触发 |
scroll | 滚动条滚动就会触发 |
元素属性系列
获得元素距离带有定位父元素的位置,获得元素自身的大小。
offsetLeft | |
offsetTop | |
offsetWidth | |
offsetHeight | |
offsetParent |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!