DOM重点核心(注册事件+DOM事件流)

目录

1.注册事件

注册时间概述

addEventListener()

删除事件

2.DOM事件流

DOM事件流理论

事件对象

事件对象的常见属性和方法

e.targe 和 this的区别

阻止默认行为

阻止冒泡

事件委托

禁止右键菜单和禁止选中文字

获得鼠标的坐标(可视区、页面、浏览器)

常用键盘事件

keyCode判断用户按下的键的ASCII值


1.注册事件

注册时间概述

传统注册方式,特点是注册时间是唯一的

方法监听注册方式,特点是同一个元素同一个事件乐意注册多个监听器

addEventListener()

eventTarget.addEventListener(type,listener[,useCapture])

type 事件类型字符串,比如click,mouseover,这里要注意不需要带on了

listener事件处理函数,事件发生时,会调用该监听函数

useCapture 可选参数,是一个布尔值,默认值是false

addEventListener(eventName,fn)    不需要添加'on'

attachEvent  中需要添加‘on’

删除事件

传统方式删除  div[0].οnclick=null

第一种  写eventTarget.addEventListener('click',函数),就是把函数体写在了外面 里面的函数调用不用再加小括号

          div[0].addEventListener('click',fn)        //不要看图片中的,这一步是要写的

          function fn(){

                alert(22)

                div[1].removeEventListener('click',fn)

}

第二种,先写eventTarget.attchEvent('onclick',函数) ,再同上写

两种写法无非就是第二种比第一种多了“on”

2.DOM事件流

DOM事件流理论

捕获阶段从大到小,冒泡阶段从小到大

事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程即DOM事件流

addEventListener(type,listener[,useCapture])   

addEventListener(type,function(){},true/false)

  第三个参数如果是true,表示在事件捕获阶段调用事件处理程序;如果是false或者是省略,表示在事件冒泡阶段调用事件处理程序

有些事件是没有冒泡的,比如onblur 、onfocus 、onmouseenter、 onmouseleave

事件对象

eventTarget.οnclick=function(event){}

eventTarget.addEventListener('click',function(event){})

event就是事件对象,写在函数的小括号中

标准浏览器中将event 单写成e就可以识别,但是有些不能用,需要写window.event来获取查找

事件对象的常见属性和方法

e.targe 和 this的区别

e.target 返回的是触发事件的对象(元素)      this 返回的是绑定事件的对象(元素)

e.target  点击了哪个元素,就返回那个元素; this 不论点击谁,返回的都是绑定事件

一些兼容性问题

阻止默认行为

返回事件类型

div.addEventListener('事件类型',调用函数)   函数中写e.type

阻止默认行为(如让链接不跳转、点击提交按钮不提交)

普通浏览器 e.preventDefault()      前面接受的对象(var)是链接或者按钮

低版本浏览器 e.returnValue;

只限于传统的注册方式 return false

阻止冒泡

标准浏览器  e.stopPropagation()

低版本浏览器  e.cancelBubble=true    可以先进行一个判断

写在函数中,可以组织后面的冒泡

事件委托

不是给每个子节点单独设置事件监听器,而是将事件监听器设置在其父节点上,然后利用冒泡原理影响设置每个节点

绑定父级元素,在父级元素的函数中添加需求    e.target可以获得点击对象

禁止右键菜单和禁止选中文字

contextmenu主要控制应该何时显示上下文菜单,主要用于程序员取消默认的上下文菜单

在函数中添加e.preventDefault()即可

selectstart 开始选中  (不能进行复制等操作)

在函数中添加e.preventDefault()即可

获得鼠标的坐标(可视区、页面、浏览器)

client 鼠标在可视区的x和y坐标   e.clientX x方向     e.clientY y方向

page 鼠标在文档页面的x和y坐标   e.pageX  x方向   e.pageY y方向

screen 鼠标在电脑屏幕的x和y坐标     e.screenX x方向    e.screenY y方向

移动天使

用到了mousemove的触发方式,只要鼠标移动1px,事件就会被触发

常用键盘事件

onkeyup 某个按键被松开时触发

onkeydown  某个按键被按下时触发

onkeypress  某个按键被按下时触发 但是它不识别功能键,比如ctrl、shift、箭头等

使用addEventListener时不用加‘on’

三个时间的执行顺序是:keydown-keypress-keyup

keyCode判断用户按下的键的ASCII值

onkeydown和onkeyup不区分大小写    onkeypress区分大小写

将时间方式定义为"keyup"或者其他,在函数中直接console.log(e),就会出现点击按钮输出的结果

输入内容案例

用keyup而不用keydown,前者是弹开后进入判断再去执行事件不会再输入内容,而后者是直接输入内容再去进行判断

目标位置.focus()  focus直接定位到目标位置

这里写的是document.addEventListener(),是因为是在整个网页中点击的,绑定的是整个网页

快递单号查询

在大盒子中放两个小盒子,一个是弹出的显示大框,一个是输入框

keydown和keypress在文本框中的特征:两个事件触发时,文字还没有落进文本框 ,而keyup触发时文字已经落入文本框了

还有一个使用keyup的原因是,在按键的时候能先输入文字,即文本框中有字,隐藏的框能检测到value值不为空,所以能显示出来;如果换成其他两种形式,第一次在按键的时候,显示大框不会弹出来

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

RIP动态路由协议详解

目录 一:RIP协议的基本信息 二:RIP协议中的更新方式 三:RIP协议中的计时器 定时更新器(UPDATE timer) 无效定时器(invalid Timer) 垃圾收集定时器(garbage collection timer&a…

怎样计算Excel一列数值中十位数为5的个数?

有一列数字,可能正数也可能是负数,有可能有小数,要怎么计算这列数字中十位数为5的数量有多少个? 一、按示例情况,数字均为整数 公式如下: SUM(--(MID(A1:A6,LEN(A1:A6)-1,1)"5")) 数组公式&a…

【JS面试题】原型原型链

一、面试真题展示: 1. 如何准确判断一个变量是不是数组? ① 使用instanceof进行判断:a instanceof Array ② 使用Array.isArray()进行判断:Array.isArray(a) 2. 手写一个简易的jQuery,考虑插件和扩展性? …

python的文件操作及函数式编程介绍

五、文件操作 1、读取键盘输入 input 获取标准输入,数据类型统一为字符串 #!/usr/bin/python # -*- coding: UTF-8 -*- str input("请输入:") print("你输入的内容是: ", str) 这会产生如下的对应着输入的…

c++ 各版本特性介绍

c C是一种高级编程语言,以其强大的功能、灵活性和高效性而闻名。它是由Bjarne Stroustrup在20世纪80年代初期在贝尔实验室开发的,作为C语言的一个扩展。C不仅包含了C语言的所有特性,还引入了面向对象编程(OOP)的概念&…

TCP四次挥手——断开连接 滑动窗口-流量控制

四次挥手 在TCP的四次挥手中,其重要作用就是释放客户端和服务器的连接。 这里的一些参数非常重要,因为这些参数的作用是为了表达TCP四次挥手断开连接的过程。 其中的参数如下 1.FIN:FIN (Finish) 是TCP协议中的一个标志位,用于…

基于spingboot,vue线上辅导班系统

目录 项目介绍 图片展示 运行环境 获取方式 项目介绍 权限划分:用户,管理员 具有前后台展示,前台供用户使用;用户具有自己的后台,查看自己的老师课程等;管理员具有最大的权限后台。 用户&#xff1a…

76岁林子祥升级做爷爷,亲自为孙女取名

林子祥与前妻吴正元的儿子,现年39岁的林德信入行以来绯闻不少,自与圈外女友Candace拍拖后便修心养性,去年他已经低调与拍拖5年多Candace完婚,正式步入人生另一阶段。 昨日(5月12日)林德信借母亲节这个温馨日…

Linux - make与makefile

文章目录 什么是make和makefile如何使用依赖关系 和 依赖方法伪目标 写个程序-进度条换行和回车的区别 什么是make和makefile make是一个命令 makefile是一个文件 这就是make和makefile的本质 make和 ll , pwd ,su 一样都是命令 makefile和 test , test.c 一样都是…

vue2人力资源项目8员工详情

页面结构 <template><div class"dashboard-container"><div class"app-container"><div class"edit-form"><el-form ref"userForm" label-width"220px"><!-- 姓名 部门 --><el-row…

C#之如何判断数据类型

一、GetType方法 a.GetType()&#xff1a;获取当前变量的类型对象 string str "Hello World";Console.WriteLine(str.GetType()); 结果: 二、typeof方法 typeof(Int)&#xff1a;获取的是Int类型的类型对象 int num 10;Console.WriteLine(num.GetType() typeof(i…

常见磁盘分区问题

给磁盘分区有几个主要的原因&#xff1a; 组织和管理数据&#xff1a;分区可以帮助用户更好地组织和管理数据。例如&#xff0c;你可以在一个分区上安装操作系统&#xff0c;而在另一个分区上存储个人文件。这样&#xff0c;即使操作系统崩溃或需要重新安装&#xff0c;你的个…

【cmake】Windows 环境下编译第三方依赖源码(以编译Xerces库为例)

第三方依赖源码的编译分为两种&#xff0c;一种是使用 Configure 脚本编译&#xff0c;另一种是使用 CMakeLists.txt 编译。Xerces 3.2.3 的编译方式是 CMakeLists.txt 脚本编译。 必要软件&#xff1a; CMake &#xff08;CMake | Download&#xff09;Visual Studio 2019&a…

java版数据结构:堆,大根堆,小根堆

目录 堆的基本概念&#xff1a; 如何将一个二叉树调整成一个大根堆&#xff1a; 转成大根堆的时间复杂度 根堆中的插入&#xff0c;取出数据&#xff1a; 堆的基本概念&#xff1a; 堆是一种特殊的树形数据结构&#xff0c;它满足以下两个性质&#xff1a; 堆是一个完全二叉…

Mirror从入门到入神

Mirror从入门到成神 文章目录 Mirror从入门到成神简介NetworkClientRegisterPrefabConnect (string address)Disconnect ()activeactiveHost NetworkServerSpawn 简介 Mirror是一个unity网络同步框架&#xff0c;基于MonoBehaviour生命周期的回调的基础上进行数值的同步&#…

刷题之找到字符串所有字母异位词

找到字符串所有字母异位词 滑动窗口。滑动窗口大小为待比较数组的大小。 class Solution { public:vector<int> findAnagrams(string s, string p) {//滑动窗口vector<int>result;if(s.size()<p.size())return result;vector<int>pnum(26,0);//记录p的字…

[第五空间 2021]WebFTP

目录扫描git泄露phpinfo.php 一开始想到是sql注入&#xff0c;但是不行。目录扫描&#xff0c;发现 .git 和 phpinfo.php 访问phpinfo.php&#xff0c;ctrlf 搜索 flag&#xff0c;找到 flag。

【风变】Python爬虫精进复习-20240430

参考笔记 下面给出一个巨佬学习风变pyhton基础语法和爬虫精进的笔记&#xff08;链接&#xff09; 风变编程笔记(一)-Python基础语法 风变编程笔记(二)-Python爬虫精进 技术总结 request BeautifulSoup selenium BeautifulSoup 练习0-1&#xff1a;文章下载 import requ…

TypeScript学习日志-第二十六天(weakMap,weakSet,set,map)

weakMap,weakSet,set,map 一、set set 的基本用法如下&#xff1a; 二、map map 与 set 的 区别 就是 map 的 key 可以是引用类型 object array , map 的添加时使用 set 三、weakmap weakset weakmap和weakset 都是弱项 弱引用 其键必须是引用类型&#xff0c;不能是其它类…

【C/C++笔试练习】DNS劫持、三次握手、TCP协议、HTTPS、四次挥手、HTTP报文、拥塞窗口、POP3协议、UDP协议、收件人列表、养兔子

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;DNS劫持&#xff08;2&#xff09;三次握手&#xff08;3&#xff09;TCP协议&#xff08;4&#xff09;HTTPS&#xff08;5&#xff09;四次挥手&#xff08;6&#xff09;HTTP报文&#xff08;7&#xff09;拥塞窗口&a…