事件详解

一、事件基础

事件是可以被 JavaScript 侦测到的行为,例如鼠标点击、键盘按键等。js与html的交互就是通过事件来进行的。

1、事件驱动

                        事件驱动
─────────────────────────────────────────────────────────────

   ┌──────────┐       ┌──────────┐       ┌──────────┐
   │          │       │          │       │          │
   │  Source  │ ───── │  Event   │ ───── │  Handle  │
   │          │       │          │       │          │
   └──────────┘       └──────────┘       └──────────┘
      事件源               事件            事件处理程序   

     element      .     onclick      =    function(){}
     window       .     onload       =    function(){}

─────────────────────────────────────────────────────────────

2、事件集合

(1)鼠标事件

事件 描述
onclick 点击
ondblclick 双击
onmousedown 按下
onmouseup 抬起
onmousemove 移动
onmouseover 移入
onmouseout 移出
onmouseenter 鼠标指针移动到元素上时触发(不支持冒泡)
onmouseleave 鼠标指针移出元素上时触发(不支持冒泡)
oncontextmenu 右键

(2)键盘事件

事件 描述
onkeydown 按下
onkeyup 抬起
onkeypress 按下(只能触发数字字母符号)

(3)表单事件

事件 描述
onfocus 获得焦点
onblur 失去焦点
onchange 失去焦点并内容改变
onsubmit 提交事件(form标签事件)
onreset 重置事件(form标签事件)
oninput 表单输入

(4)其他事件

事件 描述
onscroll 滚动条事件(滚动条位置改变)
onwheel 鼠标滚轮事件
onresize 页面尺寸改变
onload 页面加载完成之后执行该事件
DOMContentLoaded 页面结构加载完成执行该事件

二、事件高级

1、绑定事件的方式

(1)标签绑定事件

<button onclick="click_fn()">click</button>
<script>
  function click_fn(){
    
    console.log(this);
  }
</script>

(2)Document对象来绑定事件

var button1 = document.querySelector('button')
button1.onclick=function(){
   
	console.log("第一个点击事件的方法");
}
var button2 = document.querySelector('button')
button2.onclick=function(){
   
	console.log("第二个点击事件的方法");
}      //第二个点击事件的方法会覆盖第一个方法,所以点击只会触发第二次的点击事件方法

注意:后面的事件会覆盖前面的事件,而不会两者前后触发

2、事件监听

为一个事件添加多个事件处理程序,解决了上面两种方法不能添加多个方法 更精细的控制事件监听器的触发阶段

(1)绑定事件

语法:

element.addEventListener(event,callback,bool);
参数 类型 描述
event string 表示事件类型的字符串 如:“click” “mouseover” 事件名称不添加on前缀
callback function 表示事件处理程序,函数中的this 指向添加监听的对象
bool boolean 可选,true表示在捕获阶段调用事件处理程序;false表示在冒泡阶段调用。后面会有事件流的详细解释
标签.addEventListener("事件名称",function(){
   },false);    //兼容到IE9及其以上
标签.attachEvent("事件名称",function(){
   })    //  ie8及以下

(2)移除事件绑定

语法:

element.removeEventListener(event,callback,bool);
<button id="btn"></button>
<script type="text/javascript">
  var btn=document.getElementById('btn');
  function handle(){
    
    console.log(this);
  }
  //兼容到IE9及其以上
  btn.addEventListener('click',handle,false);      //添加事件处理程序
  btn.removeEventListener('click',handle,false);    //移除事件处理程序

  //  ie8及以下
  btn.attachEvent('onclick',handle);       // 添加
  btn.de
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值