分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

js 事件对象

发布时间:2023-09-06 02:13责任编辑:彭小芳关键词:js

/*
事件绑定的格式:
元素节点.on + 事件类型 = function(){

}

元素节点
事件类型
on+事件类型:事件处理函数
【注】上述三者一绑定:生成一个新的事件对象。
【注】触发事件以后,系统会去调用相关的事件处理函数。

事件对象获取:系统调用相关的函数的时候,会直接将生成的事件对象,当做参数传入到我们的函数内部。

已下代码演示用到的html结果:

<body> ???<button id = "btn1">按钮</button></body>

*/

 ???????????window.onload = function(){ ???????????????var oBtn = document.getElementById(‘btn1‘); ???????????????/*所以 ???????????????oBtn.onclick = function(){} ?就是一个事件对象 ???????????????oBtn 也是一个对象,所以我们把上面中的.onclick = function(){}看作是 oBtn对象的一个方法(函数); ???????????????我们把这个事件函数写在这以后,什么事件调用的呢? ???????????????我们都知道,只有按钮被点击时才会调用这个事件函数,所以这个函数是系统给调用的。 ???????????????【注】我们自己调用得在页面写如下代码 ???????????????????oBtn.onclick();//我们自己调用 ???????????????????????????*/ ???????????????????????????//} ???????????

继续看:

 ???????????window.onload = function(){ ???????????????var oBtn = document.getElementById(‘btn1‘); ???????????????????????????????oBtn.onclick = function(){ ???????????????????alert(1); ???????????????} ????????????????????????????oBtn.onclick();//我们自己调用 ????????????????????????????????} ???????????

// 这样页面加载过程中就会弹出 消息框   1,点击按钮后也会弹出 消息框 1;


/*我们再来看一下 oBtn.onclick = function(){} 在调用的时候我们并没有传参,我们利用arguments(函数内置的数组 arguments(只要声明一个
函数,系统就会自动分配一个arguments数组)用来存函数内的参数);*/

//测试一 ???我们自己调用时 给传入实参会怎么

 ???????????window.onload = function(){ ???????????????var oBtn = document.getElementById(‘btn1‘); ???????????????????????????????oBtn.onclick = function(){ ???????????????????alert(arguments); ???????????????} ????????????????????????????oBtn.onclick(10);//我们自己调用 ??给他一个实参 ?10 ?????????????????????????}

//给我们的弹窗为 [object Arguments] 说明是一个Arguments对象

/*我们再来看一下我们传入的10 有没有存进去*/

 ???????????window.onload = function(){ ???????????????var oBtn = document.getElementById(‘btn1‘); ???????????????????????????????oBtn.onclick = function(){ ???????????????????alert(arguments[0]);//arguments函数内数组的0号下标 ???????????????} ????????????????????????????oBtn.onclick(10);//我们自己调用 ??给他一个实参 ?10 ?????????????????????????}


//我们的测试结果是 ?10 ?说明我们的 实参已经传入了进去。

/*测试二 我们来看一下 系统给我们调用时 会给arguments 函数内数组 传入什么*/

 ???????????window.onload = function(){ ???????????????var oBtn = document.getElementById(‘btn1‘); ???????????????????????????????oBtn.onclick = function(){ ???????????????????alert(arguments[0]);//arguments函数内数组的0号下标 ???????????????} ????????????????//点击页面上的按钮,让系统自己调用 ???????????????????????????????????}

//点击页面上的按钮 给我们弹出 [object MouseEvent] 翻译出来是鼠标事件对象 ,刚好click就是鼠标事件类型的一种,
//所以系统在调用时传入的参数是一个 事件对象

/*
通过上面的arguments[0]的方式我们可以拿到 ?这个事件函数的 ?事件对象,但是我们都知道,在编程中能不用arguments就不用
arguments,所以我们准备给事件函数添加一个自定义形参ev(因为事件的英语单词为event,所以我们就自定义了一个ev方便代码阅读)
即oBtn.onclick = function(ev){};具体代码如下*/

 ???????????window.onload = function(){ ???????????????var oBtn = document.getElementById(‘btn1‘); ???????????????????????????????oBtn.onclick = function(ev){ ???????????????????alert(ev);//查看我们的形参 ???????????????} ????????????????????????????????????}

效果与上图相同

可以看出通过自定义形参的方式依然可以得到 事件对象
但是在IE8以下不支持这中形式,但是IE给我们提供了一种方式 通过window.event
具体代码如下

 ???????????window.onload = function(){ ???????????????var oBtn = document.getElementById(‘btn1‘); ???????????????????????????????oBtn.onclick = function(){ ???????????????????alert(window.event);//IE8下的方法 ,看看能弹出点什么 ???????????????} ????????????????????????????????????}

//弹出的内容为 [object PointerEvent] 也是鼠标事件对象的意思,所以我们可以通过这个方法获取,
//怎么才能兼容所有的浏览器呢,这里有个获取事件对象的固定格式写法,具体代码如下

 ???????????oBtn.onclick = function(ev){ ???????????????var e = ev || window.event; ???????????????//alert(e); ???????????} ???????

//利用 或运算的短路操作给 变量 e 赋值 。
//var e = ev || window.event; ?这句语句的意思是 变量 e 如果浏览器有 ev 形参这种方式 或运算后面的 window.event 就不计算了,
//所以e 也就等于 ev 了,如果没有ev这种形式,就执行后面的语句 e也就等于window。event了;


/*
费劲心思的拿到 事件对象 ?是因为 事件对象有很多属性要加在事件对象上。
例如鼠标事件上的 .button .clientX ?.clientY ?.pageX ?.pageY ?.screenX ???.screenY
修改键(快捷键)属性 .shiftKey.ctrlKey.altKey .metaKey
加在键盘事件上的 keydownkeyupkeypress

js 事件对象

原文地址:https://www.cnblogs.com/taohuaya/p/9609115.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved