IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> javascript事件 -> 正文阅读

[JavaScript知识库]javascript事件

事件驱动三要素

1、事件源:绑定事件的元素

2、事件类型:被js监测到的行为

3、事件处理函数:一个函数,记录事件发生时要进行的操作,也叫做“事件句柄”或“事件监听器”,事件监听器根据DOM级别的不同写法,功能上也有区别

DOM0级:btn.onlick=function(){...}
//删除DOM0级
btn.onclick=null; ?//将节点对象的事件处理属性赋值为null即可
DOM2级:btn.addEventListener("click",function{...},false); ? //区别没有on
//删除DOM2级
function print(){...}
btn.addEventListener('click',print);
btn.removeEventListener('click',print)

window事件分类

事件类型描述
onload页面加载完成触发
onscroll当文档被滚动时
onload一张页面或一张图片加载完成

鼠标事件

属性描述DOM
onclick单击事件2
ondblclick双击事件2
oncontextmenu在用户点击鼠标右键打开上下文菜单时触发
ondblclick当用户双击某个对象时调用的事件句柄。2
onmousedown鼠标按钮被按下。2
onmouseenter当鼠标指针移动到元素上时触发。2
onmouseleave当鼠标指针移出元素时触发2
onmousemove鼠标被移动。2
onmouseover鼠标移到某元素之上。2
onmouseout鼠标从某元素移开。2
onmouseup鼠标按键被松开。2

键盘事件

属性描述DOM
onkeydown某个键盘按键被按下。2
onkeypress某个键盘按键被按下并松开。2
onkeyup某个键盘按键被松开。2

注意: 在所有浏览器中 onkeypress 事件只能监听字母和数字,不能监听一些特殊按键(ALT、CTRL、SHIFT、ESC、箭头等)。监听一个用户是否按下按键请使用 onkeydown 事件,所有浏览器都支持 onkeydown 事件。

事件流:

事件流即事件在页面上的传播顺序

IE团队认为,事件是从里往外传播的所以我们称为“冒泡型事件流”

Netscape团队认为,事件是从外往里传播的所以我们称为“捕获型事件流”

后来在W3C组织的统一之下,javascript同时支持了冒泡流和捕获流称为“DOM事件”

事件流的设置:

1、DOM0级事件监听的方式只支持冒泡

2、DOM2级事件监听的方式可以通过add.EventListenter()方法的第三个参数来控制事件流类型

false:默认值,冒泡型事件流

true:捕获型事件流

事件对象event:

1、在执行代码时,会自动给事件处理函数提供一个事件对象event作为参数

2、当点击某个元素时,为元素绑定的点击事件就会被触发,事件处理函数的形参将接受到event对相

3、event对象就包含了关于该事件的相关信息,包括导致事件的元素、事件的类型、鼠标的位置

//获取事件对象
btn.onclick=function(event){
let a=event ||window.event; ?//(低版本ie获取window.event)
}


//事件目标  event.taeget
<ul id="ul">
 ? ?<li></li>
<li></li>
</ul>
?
ul.onclick=function(event){
 ? ?console.log(event.target) ? ?//具体某一个li(target确定具体触发事件的元素)
}
//事件目标与this
ul.onclick=function(event){
 ? ?console.log(this) ? ?//ul元素(this指的是事件源) 
 ? ?console.log(event.target) ? //某一个li
}

键盘事件(event):

属性含义其他
key返回具体按下的键名
keyCode键值码,按下的按键的keyCode编码onkeypress区分捕获到的keyCode字母大小写 还主要用于获取数字键中的符号
altkey、ctrkey、shiftkey指示在指定事件发生时,Alt键,Ctrl键,shift键是否被按下。返回boolean值
<input type="text" id="ipt">
<script>
ipt.onkeypress=function(event){
console.log(event.keyCode);
 ? ?if(event.keyCode==56){
 ? ? ? ?console.log(s); ? //当按下键盘上数字8时,输出“s”
 ?  }
}
</script>

鼠标事件:

属性含义
clientX、clientY鼠标跟文档显示区(浏览器)
pageX、pageY鼠标跟HTML文档页面
screenX、screenY鼠标相对于屏幕
offsetX、offsetY鼠标相对于事件源

offsetWidth offsetHeight和返回该元素的像素宽度,宽度包含内边距(padding)和边框(border),不包含外边距(margin),是一个整数,单位是像素 px。

clientHeight和 clientWidth属性返回元素的可见高度和宽度,仅包括内边距(padding)。

事件委托

btn.onclick=function(event){//event事件对象
if(event.target.nodeName=='P') ?//元素名需要大写 ? target确定触发事件的元素
}
<div id="box">
 ? ?<p id="p">ppp</p>
 ? ?<h1 id="h1">h1</h1>
 ? ?<h2 id="h2">h2</h2>
 ? ?<p></p>
</div>
?
<script>
 ? ? ? ?box.onclick = function (event) {
 ? ? ? ?//如果点击的是h2,则输出 ? <h2 id="h2">h2</h2>
 ? ? ? ?console.log(event.target);
 ? ? ? ?//如果点击的是id为h1的元素,则输出666
 ? ? ? ?if (event.target.id == h1) {
 ? ? ? ? ? ?console.log(666);
 ? ? ?  }
 ? ? ? ?//如果点击的是p元素,则输出666 ?  nodeName元素节点  注:元素名要大写
 ? ? ? ?if(event.target.nodeName=='P'){
 ? ? ? ? ? ?console.log(666);
 ? ? ?  }
 ?  }
</script>

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-09 11:33:50  更:2021-12-09 11:36:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:58:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码