浅谈DOM中事件机制

深入理解JS DOM事件机制 下面小编就为大家带来一篇深入理解JS DOM事件机制。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 立即下载

在前端中,js和HTML的交互是通过事件来实现的。事件也可以理解为用户在浏览页面的一些操作,如点击鼠标,移动鼠标,按下键盘等操作。

想要在成为一名出色的前端工程师,了解DOM的事件机制是必备知识。而了解DOM,我觉得从以下几个方面入手更能快速的掌握:事件流,事件处理程序(这只是DOM中最为基础也是最为重要的一部分)。

一  、事件流

PS:有兴趣的可以了解下浏览器的发展史,更能容易理解事件流的概念。

事件流及为接收事件的顺序,早起浏览器是IE和Netscape两大团队,也是他们提出了事件流的概念,但两者的理念却是背道而驰。

IE事件流:

1.现在主流浏览器都支持的也称为事件冒泡。

2.传播方式,是向上传播。由最具体的元素传递事件给其父元素.....一直到document元素(后期许多浏览器直接到window对象上。)

事件捕获:

传播方式,是向下传播(为方便理解,自己总结的名称)。及由document开始一直传播到最具体的元素。只有Netscape浏览器厂家支持此种事件流。

DOM2级事件流:

W3C定义的DOM规范中定义了事件流包括三个阶段:事件捕获阶段,处于目标阶段,事件冒泡阶段。


二 事件处理程序

HTML事件处理程序

在HTML中直接添加事件如:<input type="button" onclick="showMsg()" />

HTML事件处理可以直接在事件中访问自身的属性。优点是在form元素中不用引用表单元素就能访问到form元素中的其他属性。

如:

<form>

<input type="text" value=''test" name="username" />

<input type="button" onclick="username.value" />

<form/>可以直接访问。

DOM0级事件处理程序

DOM0级事件处理是通过JavaScript指定事件处理程序的传统方式。及先用JavaScript去掉dom元素,在用此属性调用事件并将其赋值给一个函数。

如:

<input type="button"  id=“btn” />

<script>

var btn=document.getElementById("btn");

btn.onclick=function(){}

<script/>

删除方式,通过指定事件函数为null如:btn.onclick=null;

DOM2级事件处理程序

DOM2级事件处理就是我们常说的事件绑定,与DOM0级相似只是在事件绑定的写法上应该如下:

btn.addEventListener("click",function(){});

与DOM0的区别是:DOM2绑定的事件可以多次执行不同的方法。DOM2删除事件需要调用removeEventListener(“onclick”,funName);

如:

<input type="button"  id=“btn” />

<script>

var btn=document.getElementById("btn");

function func(){

alert(this.id)

}

btn.addEventListener("click",func);

btn.removeEventListener("click",func);

<script/>



Zabbix7.4监控系统在Rocky Linux10.0上的完整部署流程(含MariaDB配置) 本文详细介绍了在Rocky Linux 10.0操作系统上部署企业级监控系统Zabbix 7.4的完整流程,并重点阐述了与MariaDB数据库的深度集成与性能优化配置。内容涵盖从系统环境准备、数据库安装与安全加固、Zabbix核心组件部署,到服务配置、Web界面初始化以及生产环境高级调优的全方位实战指南,旨在帮助用户构建稳定高效的监控平台。 阅读详情

相关推荐

PHP+txt文件存储简易留言板

留言板共三个文件: index.php---展示留言内容和收集表单 write.php---向txt文件写入数据 message.txt---存储留言数据 index.php用于展示留言内容、通过表单把用户输入的数据POST给write.php,write.php把内容写入message.txt。 index.php代码: <?php //设置时区 date_defau...

仿站、源码搭建/迁移技术博客 1031

DOM事件机制

事件机制 HTML DOM 允许 JavaScript 对 HTML 事件作出反应。JavaScript 能够在事件发生时执行,比如当用户点击某个 HTML 元素时。 为了在用户点击元素时执行代码,请向 HTML 事件属性添加 JavaScript 代码: <div id='div1'>我是一个div</div> <button id='btn'>点我啊</button> <!-- 还可以在HTML标签中进行事件的绑定 需要加()--> <.

冰霜的博客 540

模型检测--工具KeYmaera

论文:KeYmaera: A Hybrid Theorem Prover for Hybrid Systems 作者:Andre Platzer and JanKeYmaera摘要1 介绍2用于混合系统的KeYmaera验证工具3混合系统,混合自动机和混合程序 摘要 KeYmaera是一种用于混合系统的混合验证工具,它结合了演绎,实数代数和计算机代数证明者技术。它是自然的自动和交互式定理证明器 混合系统的规范和验证逻辑。 KeYmaera支持差分动态逻辑,它是用于混合程序的实值一阶动态逻辑,是混合自动机的程

ziigea的博客 1077

【基础类】—DOM事件系统性学习

DOM事件系统性学习

m0_37616866的博客 393

继电保护整定值计算软件_「全套69份」整定值计算与设计方案

【全套69份】整定值计算与设计方案,输电线路、变压器、发电机、电容器、母线保护等下载方式见文末内容预览:10kV高压电机保护原理及整定计算35kV环网运行线路继电保护整定计算方案分析35KV以下继电保护及三段式电流保护整定计算110 kv电网计算机整定计算新方案220kV两相式电铁牵引站供电线路的短路故障计算及其保护整定原则分析220kV周潮线接地距离保护整定计算特殊方案750 kV变压器保护配置...

weixin_30825953的博客 5013

Zabbix华为交换机光衰告警

zabbix使用自动发现监控huawei网络设备光衰

qq_31651649的博客 4529

浅谈js事件机制

事件是 用户操作网页时发生的交互动作,比如 click/move, 事件除了用户触发的动作外,还可以是文档加载,窗口滚动和大小调整。事件被 封装成一个 event 对象,包含了该事件发生时的所有相关信息( event 的属性)以及可以对事件进行的操作( event 的方法)。JavaScript事件模型指的是一种基于事件驱动的编程模式,用于处理浏览器和用户发生的事件。当用户或浏览器执行某个动作时,例如点击某个元素或者提交表单,JavaScript就会将这些动作封装为一个事件,并将该事件传递给注册了该事件的回

BradenHan的专栏 1088

基于Ansys Fluent和Mechanical的血管稳态流固耦合模型

流固耦合模型在医学中也会被用到,本次小编为大家带来针对人造血管内血液流动的仿真实例。 在开物云平台上找到Workbench 点击进入:https://cloud.yuansuan.cn/?user_source=community 在左侧的Toolbox中找到对应的模块:Fluid Flow(Fluent)和Static Structure 双击“Geometry”,进入建模功能 文件-打开-找到保存的模型文件 退回到主界面,在fluid flow(Fluent)中找到mesh

huasheng233的博客 3910

Js中dom0级事件与dom2级事件浅谈

其实,就w3c标准来说,并没有0级dom的标准。只不过,事实上的适用总会成慢慢成为约定成俗的规则。所谓的0级dom与2级dom事件就是不同版本间的差异,具体的说就是,对于不同的dom级别,如何定义事件处理,以及使用时有什么不同。   我们对于事物的认识过程,总是要先知道它叫什么名字,然后了解它是干什么的,接着学习如何使用,最后,去搞明白实现原理。首先,我们要谈的是dom事件,它是用来处理html中

东隅已逝,桑榆非晚。 9876

DeepSeek 赋能太空探索:从轨道优化到星际开拓的 AI 革命

随着人工智能技术蓬勃发展,DeepSeek 在太空探索领域展现出巨大应用潜力。本文深入剖析 DeepSeek 技术核心,包括低功耗运算、开源生态等优势,阐述其与传统航天技术的差异。从航天器自主控制、深空探测、载人航天等关键环节,结合实时轨道调整、故障诊断修复等实例,揭示 DeepSeek 对航天任务效率与安全性的提升作用。同时探讨其应用面临的太空环境适应、伦理安全等挑战,展望技术演进方向及与前沿技术融合前景,展现 DeepSeek 为人类太空探索带来的变革与深远意义。

邓邓子的博客 2258

SWC_RTE01-AutoSAR架构【AutoSAR架构设计概述】

1 基于AutoSAR架构的概述 1.1架构层面:功能可以细分子功能,各个子功能需要交互。 -大功能可以通过Autosar组件Composition去表示; -各个子功能一般具有不可分割性,可以通过Autosar原子组件Component去表示; -各个子功能的交互可以通过接口去通信和交互; -各个子功能的行为可以通过内部行为去表示;具体表现为Runnable的设计;架构设计的时候不考虑具体的逻辑实现;只会关注Ruannble的触发事件或周期;数据访问的一致性问题;具体逻辑设计可通过模版c文件实现或通过基于

8451

浅谈js中的事件循环和事件处理机制

当执行栈为空时,事件循环会首先检查微任务队列。如果有微任务,它会依次执行微任务队列中的所有任务,直到微任务队列为空。然后,事件循环会检查宏任务队列,并取出队列中的第一个宏任务执行。这个宏任务执行时,可能会产生新的微任务或宏任务,这些任务会被相应地添加到各自的任务队列中。重复上述过程,形成事件循环。JavaScript中的事件处理机制包括事件捕获、事件冒泡和事件委托三个部分。事件捕获允许在事件到达目标元素之前进行处理,而事件冒泡则使得可以在更高级别的元素上捕获事件。

2301_76607771的博客 1242

出现 has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present on the 解决方法

Access to XMLHttpRequest at 'http://127.0.0.1:5000/api/data' from origin 'http://10.197.0.79:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

码农研究僧的博客 1万+

浅谈JavaScript的事件机制

JavaScript 的事件是以一种流的形式存在的,一个事件会有多个元素同时响应。具体分为:捕获型事件(非IE)、冒泡型事件(所有浏览器都支持)。 捕获型事件是自上而下的,而冒泡型事件是自下而上的。下面这张图说的很明了: 1.捕获型事件: #div1 #div2 var a = document.getElementById('div1')

wusuopuBUPT的专栏 6809

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

浅谈js的事件机制,事件冒泡、事件捕获、事件代理(事件委托)

当你点击粉色的时候,首先会触发蓝色,然后再触发粉色(虽然绑定了两个事件,但是由于使用了event.stopImmediatePropagation()方法,所以就不会触发粉色盒子的其他事件了)。至于绿色不触发,是由于为粉色添加了阻止事件传播,所以不会向外层继续传播事件,也就是说绿色的是不会触发的。当你点击粉色的时候,首先会触发蓝色,然后再触发粉色(绑定了两个事件,就会打印两条数据)。至于绿色不触发,是由于为粉色添加了阻止事件传播,所以不会向外层继续传播事件,也就是说绿色的是不会触发的。

ajaxsync 1457

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

浅谈Shadow DOM

编者按:本文作者:刘观宇,360 奇舞团高级前端工程师、技术经理,W3C CSS 工作组成员。为什么会有Shadow DOM你在实际的开发中很可能遇到过这样的需求:实现一...

奇舞周刊 1153

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

浅谈DOM

浅谈dom

qq_51776090的博客 188

浅谈事件委托(事件代理)和事件冒泡

事件冒泡:子级元素的某个事件被触发,它的上级元素的该事件也被递归触发。 事件委托:使用了事件冒泡的原理,从触发某事件的元素开始,递归地向上级元素传播事件。 事件委托的优点: 1) 对于要大量处理的元素,不必为每个元素都绑定事件,只需要在它们的父元素上绑定一次即可,提高性能。 2) 可以处理动态插入DOM中的元素,对动态插入DOM中的元素进行直接绑定是不行的。 关于事件

筱葭的博客 4357

浅谈React 虚拟DOM,Diff算法与Key机制

参考文章: https://juejin.cn/post/6844903824683958286 1.虚拟dom 原生的JS DOM操作非常消耗性能,而React把真实原生JS DOM转换成了JavaScript对象。这就是虚拟Dom(Virtual Dom) 每次数据更新后,重新计算虚拟Dom,并和上一次生成的虚拟dom进行对比,对发生变化的部分作批量更新。在此其中,React提供了componentShouldUpdate生命周期来让开发者手动控制减少数据变化后不必要的虚拟dom对比,提升性能和渲染效

qq_43293207的博客 455

浅谈js的事件冒泡和事件捕获

什么是事件? 事件是文档和浏览器窗口中发生的特定的交互瞬间。 事件是javascript应用跳动的心脏,也是把所有东西黏在一起的胶水,当我们与浏览器中web页面进行某些类型的交互时,事件就发生了。 事件可能是用户在某些内容上的点击,鼠标经过某个特定元素或按下键盘上的某些按键,事件还可能是web浏览器中发生的事情,比如说某个web页面加载完成,或者是用户滚动窗口或改变窗口大小。 什么是事件流...

鸡血博客 175

浅谈事件监听

自从学了事件监听之后,觉得他真是个好东西~~,为什么呢? 首先说下他的好处:第一点:他可以实现对未来元素事件的绑定【?未来元素:就是在绑定事件时,页面上还不存在的元素】;第二点:减少事件绑定,提高性能【我们知道前端主要是解决性能优化和兼容问题的,所有这个就挺重要了】 下面来捋一捋事件监听一个比较全面的见解? 1、关于事件 事件分为DOM 0级事件和Dom 2级事件,DOM2级事件...

aohezhong8813的博客 245

浅谈javascript DOM编程之分离javascript

       javascript现在已经成为十分重要的一门web编程脚本语言了,几乎绝大多说的web程序设计都会用到它,但是,大多数情况下,我们习惯于把javascript写在html页面中,让html代码与javascript混在一起,让我们的代码十分的难以维护,也减少了javascript代码的复用性。      下边,我就根据我自己的心得来浅谈:浅谈javascript DOM编程之分离javascript。我们就直接切入主题吧。      把javascript存入到有关的外部文件并非难事,而问题

King-Bond's Space 1285
上一篇: nodejs学习之路(一)基本概念
下一篇: webpack构建工具安装
厌笔不萧生
博客等级 码龄10年 5粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值