javaScript:什么是事件对象?事件原对象?如何获取坐标点?

目录

前言

 事件对象(***重要***)

事件对象的常见用处

 相关代码

事件原对象

获取事件源对象的方式

获取坐标点

clientX  clientY(常用)

screenX screenY

pageX pageY 

兼容写法 (ie8以下)

其他坐标 

获取鼠标点坐标 


前言

       在JavaScript中,事件对象是与事件相关的对象,它包含了与事件触发相关的信息事件对象提供了访问事件的属性和方法,以便在事件处理程序中对事件进行操作和响应。

事件原对象是指触发事件的对象,也称为事件的目标对象或事件的源对象。它是触发事件的元素或节点,可以是文档中的任何元素,如按钮、输入框、链接等。事件原对象是事件的直接触发者,通过它可以获取事件发生的具体位置、状态和其他相关信息。

        在JavaScript中,当事件被触发时,会自动创建一个事件对象,并将其作为参数传递给事件处理函数。通过事件对象,我们可以获取事件的类型、触发元素、鼠标位置、键盘按键等信息。通过事件原对象,我们可以进一步操作触发事件的元素,例如修改元素的样式、获取或设置元素的属性值等。

       了解事件对象和事件原对象的概念对于前端开发非常重要。它们使我们能够在事件发生时获取事件的相关信息,并根据需要对页面进行相应的操作和交互。通过使用事件对象和事件原对象,我们可以实现各种交互效果,例如表单验证、按钮点击、鼠标悬停等。

 事件对象(***重要***)

       每一个事件都具有一个事件对象,可以在绑定事件的执行函数当中获取该事件对象,事件对象是一个名为 event的全局变量,通过 event 就可以获取当前事件的事件对象。

       一些低版本浏览器中,没有event变量,可以通过 参数代替

事件对象的常见用处

事件对象的常见用处

    1.获取事件源对象

    2.获取该触发点的坐标

    3.结合鼠标和键盘准确的知道鼠标的按键和键盘的按键具体是哪一个

 相关代码

let wp = document.querySelector('.wp')wp.onmouseenter = function(){  //鼠标移入事件console.log(event);}//传入参数,表示事件对象,参数是形参,名字可以任意命名,一般为evwp.onmouseenter = function(ev){  //鼠标移入事件// console.log(event);console.log(ev,'参数');}//火狐的低版本中没有event变量,因此可以通过以下方式设置兼容写法wp.onmouseleave = function(ev){let e = event || ev;console.log(e,'火狐兼容');}

事件原对象

事件原对象,指的是 真正触发该事件的元素对象

获取事件源对象的方式

1.标准浏览器中 通常使用 event.target 获取

2.ie中通常使用 event.srcElement 获取

谷歌都支持

let li = document.querySelectorAll('li')
for (let i = 0; i < li.length; i++) {li[i].onclick = function(){//获取事件源对象console.log(event.srcElement);event.target.style = `font-size:40px;color:#f00;`event.srcElement.style.background = 'pink'// li[i].style.fontSize = '40px'// li[i].style.color = '#f00'}
}

获取坐标点

clientX  clientY(常用)

clientX  clientY

    他们的兼容性很好,所有浏览器都支持

    clientX 当前触发点距离浏览器左边的距离

    clientY 当前触发点距离浏览器上边的距离

screenX screenY

screenX screenY

    他们的兼容性很好,所有浏览器都支持

    screenX 当前触发点距离屏幕左边的距离

    screenY 当前触发点距离屏幕上边的距离

pageX pageY 

 pageX pageY

    ie8 及其以上浏览器支持,所有非ie浏览器支持

    pageX 当前触发点距离页面左边的距离

    pageY 当前触发点距离页面上边的距离

兼容写法 (ie8以下)

    如果在ie8及其以下,还要获取当前点击的最高点距离页面顶部的距离,可以使用兼容写法

    ev.clientY + (document.doumentElement.scrolltop||document.body.scrolltop)

其他坐标 

    x,y  他们的值和 clientX  clientY 一致

    offsetX  offsetY  他们的值和 pageX pageY 一致

    layerX   layerY   他们的值和 pageX pageY 一致

    以上三个属性浏览器的兼容性不好,因此不常用

获取鼠标点坐标 

 document.onclick = function(ev){ev = event||ev;console.log('浏览器',ev.clientX,ev.clientY);console.log('屏幕',ev.screenX,ev.screenY);console.log('页面',ev.pageX,ev.pageY);console.log(ev);}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/130494.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

想要开发一款游戏, 需要注意什么?

开发一款游戏是一个复杂而令人兴奋的过程。游戏开发是指创建、设计、制作和发布电子游戏的过程。它涵盖了从最初的概念和创意阶段到最终的游戏发布和维护阶段的各个方面。 以下是一些需要注意的关键事项&#xff1a; 游戏概念和目标&#xff1a; 确定游戏开发的核心概念和目标…

数据结构与算法设计分析——贪心算法的应用

目录 一、贪心算法的定义二、贪心算法的基本步骤三、贪心算法的性质&#xff08;一&#xff09;最优子结构性质&#xff08;二&#xff09;贪心选择性质 四、贪心算法的应用&#xff08;一&#xff09;哈夫曼树——哈夫曼编码&#xff08;二&#xff09;图的应用——求最小生成…

剪切板中,经常用到的gpt编程提问

/data/user/0/org.qpython.qpy/files/bin/qpy thon3.sh "/storage/emulated/0/qpython/评论 截图问题1.矩阵2.1.2.1空行问题1.4.5.py" && exit .1.2.1空行问题1.4.5.py" && exit < 时间戳&#xff1a; 时间戳&#xff1a; ("…

增强LLM:使用搜索引擎缓解大模型幻觉问题

论文题目&#xff1a;FRESHLLMS:REFRESHING LARGE LANGUAGE MODELS WITH SEARCH ENGINE AUGMENTATION 论文地址&#xff1a;https://arxiv.org/pdf/2310.03214.pdf 论文由Google、University of Massachusetts Amherst、OpenAI联合发布。 大部分大语言模型只会训练一次&#…

Linux 内核 LTS 期限将从 6 年恢复至 2 年

导读在日前举行的欧洲开源峰会上&#xff0c;Linux 内核开发人员兼《Linux Weekly News》执行主编 Jonathan Corbet 介绍了 Linux 内核的最新动态以及未来的发展方向。其中一项即将发生的重大变化是&#xff1a;Linux 内核的长期支持 (LTS) 时间将从六年缩短至两年。 目前 Lin…

1000+已成功入职的软件测试工程师简历范文模板(含真实简历),教你软件测试工程师简历如何编写?

一、前言&#xff1a;浅谈面试 面试是我们进入一个公司的门槛&#xff0c;通过了面试才能进入公司&#xff0c;你的面试结果和你的薪资是息息相关的。那如何才能顺利的通过面试&#xff0c;得到公司的认可呢&#xff1f;面试软件测试要注意哪些问题呢&#xff1f;下面和笔者一…

TypeScript 笔记:String 字符串

1 对象属性 length 返回字符串的长度 2 对象方法 charAt() 返回在指定位置的字符 charCodeAt() 返回在指定的位置的字符的 Unicode 编码 concat 连接两个或更多的字符串 indexOf 返回某个指定的字符串值在字符串中首次出现的位置 lastIndexOf 从后向前搜索字符串&…

解决 Git:This is not a valid source path/URL

由于sourcetree 可以获取不同仓库的代码&#xff0c;而我的用户名密码比较杂乱&#xff0c;导致经常会修改密码&#xff0c;在新建拉去仓库代码的时候sourcetree 不会提示你密码错误&#xff0c;直接提示 This is not a valid source path/URL。 在已存在的代码仓库&#xff0…

博弈论——动态博弈

动态博弈 0 引言 前面一篇文章介绍了博弈过程中的三个分类&#xff1a;静态博弈、动态博弈、重复博弈。今天具体讲讲动态博弈的处理方法。 博弈论——博弈过程 1 概念 首先还是介绍一下动态博弈的概念&#xff0c;即博弈中各博弈方的选择和行动不仅有先后次序&#xff0c;而…

Jmeter排查正则表达式提取器未生效问题

今天在使用Jmeter的时候遇到一个很简单的问题&#xff0c;使用正则表达式提取token一直未生效&#xff0c;原因是正则表达式中多了一个空格。虽然问题很简单&#xff0c;但是觉得排查问题的方法很普适&#xff0c;所以记录下&#xff0c;也希望能够给遇到问题的大家一个参考。 …

归并排序递归方法和非递归方法详解

文章目录 归并排序递归方法和非递归方法详解1、归并排序&#xff08;递归&#xff09;1.1、归并排序思想&#xff08;递归&#xff09;1.2、排序过程&#xff08;递归&#xff09;图解1.3、归并排序&#xff08;递归&#xff09;代码 2、归并排序&#xff08;非递归&#xff09…

论文解析——AMD EPYC和Ryzen处理器系列的开创性的chiplet技术和设计

ISCA 2021 摘要 本文详细解释了推动AMD使用chiplet技术的挑战&#xff0c;产品开发的技术方案&#xff0c;以及如何将chiplet技术从单处理器扩展到多个产品系列。 正文 这些年在将SoC划分成多个die方面有一系列研究&#xff0c;MCM的概念也在不断更新&#xff0c;AMD吸收了…