DOM的操作

article/2025/10/19 14:15:29

一、DOM的操作

        1、复制节

                cloneNode(deep)

                参数deep是boolean类型,true/false

                true:表示深度复制(将节点及其子节点都进行复制) --- 深拷贝

                false:表示浅复制(只复制节点而不复制子节点) ---- 浅拷贝

 

        2、删除节点

                removeChild(node)

        (1)参数node为要删除的节点

        (2)前提:被删除的节点必须为空(没有子节点)

        3、hasChildNodes():判断当前节点是否有子节点

                返回值为false:表示没有子节点

                返回值为true:表示有子节点

        4、替换节点replaceChild(newNode,oldNode)

                用newNode节点替换oldNode节点

 

二、事件处理

        1、基本概念:

        (1)件:JavaScript可以侦测到的行为(用户在页面上进行的某种操作)

                页面加载(浏览器打开页面)、单击鼠标、鼠标进入某个区域、焦点、键盘

        (2)事件处理程序:用户进行了某种操作后,所运行的JavaScript程序段

        (3)事件驱动式:当事件发生后才去执行相应的程序

        (4)事件流:事件发生时,会在发生事件的元素节点与DOM树根节点之间按照特定的顺序进行传播,这个事件传播的过程就是事件流

        (5)在web中对事件流的解决方案:

                A、事件捕获:网景公司(Netscape)。事件流传播的顺序应该是从DOM树的根节点到发生事件的元素节点

                B、事件冒泡:微软公司(Microsoft)。事件流传播的顺序应该是从发生事件的元素节点到DOM树的根节点

        冒泡的前提是:父级也定义了相应的事件,当子元素与父元素有相同的事件时,当子元素被触发时父元素也会被触发冒泡机制

                C、w3c的事件流处理:在事件发生阶段采用捕获方式(此时不处理),在事件处理阶段采用冒泡()

        (6)事件捕获的实现

                addEventListener(事件名,事件处理程序,事件处理方式)

                参数1:事件名(click、change、load、mousedown......)

                参数2:事件处理程序

                参数3:事件的处理方式(true--表示采用事件捕获方式,false---采用事件冒泡方式)

        2、事件的绑定方式

        (1)行内绑定式

                <标签名 事件名=“事件处理程序”></标签名>

        (2)动态绑定式

                DOM对象名.事件名 = 事件处理程序

注意:“行内绑定式‘和”动态绑定式“

        不同点

                a、“行内绑定式‘中事件名为标签的属性,”动态绑定式“中事件名为DOM对象的属性

                b、“行内绑定式‘的事件处理程序中的this代表的是window对象,”动态绑定式“的事件处理程序中的this代表的是触发事件的DOM对象

        相同点:

                一个DOM对象的同一个事件只能有一个事件处理程序

        (3)事件监听式:可以给DOM对象的同一个事件绑定多个事件处理程序

                DOM对象.attachEvent(type, callback); //早期IE浏览器

                DOM对象.addEventListener(type, callback, [capture]); //标准浏览器

        3、删除事件绑定:

                DOM对象.addEventListener(type, callback);

三、事件对象:

        1、来源:当事件发生时,都会产生一个事件对象(event对象)

        2、作用:通过事件对象可以了解事件相关的信息(DOM对象、事件的类型...)

        3、获取事件对象

        (1)早期的IE浏览器:window.event

        (2)标准浏览器:将一个event对象直接传入到事件处理程序中

        4、常用属性:

        (1)type:代表当前事件的类型

        (2)target:返回发出此事件的元素(事件的目标节点)

        (3)currentTarget:返回其事件监听器触发该事件的元素

        (4)bubbles:表示事件是否是冒泡事件类型

        5、常用函数

        (1)stopPropagation():阻止冒泡事件

        (2)preventDefault():阻止默认行为

四、事件的分类

      鼠标事件:click

                mouseover:鼠标进入

                mouseout:鼠标离开

 


http://chatgpt.dhexx.cn/article/9Q9jebTC.shtml

相关文章

DOM(操作)

DOM 1 作用和分类 作用&#xff1a;使用 JS 去操作 html 和浏览器 分类&#xff1a;DOM(文档对象模型)、BOM(浏览 器对象模型) DOM 是用来呈现以及与任意HTML 或 XML文档交互的API简单说&#xff1a;DOM 是浏览器提供的一套专门用来 操作网页内容 的功能DOM的作用&am…

13前端学习之WebAPI(三):节点操作、事件高级、DOM事件流、事件委托冒泡

文章目录 一、节点操作:1. 删除节点:1.2. 案例&#xff1a;删除留言 2. 赋值(克隆)节点:3. 案例:动态生成表格:3.1 案例分析:3.2 实现: 4. 创建元素的三种方式:4.1 区别:4.2 innerTHML和createElement效率对比: 5. DOM的核心总结:5.1 创建:5.2 增加:5.3 删除:5.4 改:5.5 查&…

DOM操作

今天开始进入JS的核心操作 DOM&#xff0c;DOM操作其实很简单&#xff0c;就是增删改查这几个操作&#xff0c;先看一下思维导图&#xff1a; 1.增加操作 1.新建&#xff1a; fn creatElement(标签名) 创建元素节点 fn setAttribute&#xff08;name,value&#xff09;直接设置…

JS中DOM元素的操作

一、DOM元素的获取 1&#xff09;document.getElementsByClassName ( “class”) 返回集 htmlcollection ,用法和数组一致 说明: class为DOM元素上class属性的值 2&#xff09;document.getElementById( “id” ) 功能:返回对拥有指定ID的第一个对象的引用 返回值: DOM对象 说明…

java锁结构之无锁偏向锁轻量级锁重量级锁

一、对象的本质&#xff08;锁在对象中的体现&#xff09; 1.1、对象的结构 对象由多部分构成的&#xff0c;对象头、属性字段、补齐字段等。补齐字段是指如果对象总大小不是4字节的整数倍&#xff0c;会填充上一段内存地址是之成为4的整数倍。 其中&#xff0c;对象头在对象…

简单理解重量级锁、轻量级锁、偏向锁

全文使用synchronized来说明。 synchronized给对象上锁&#xff0c;先上偏向锁&#xff0c;在上轻量级锁&#xff0c;最后上重量级锁。上什么锁&#xff0c;是jvm根据竞争程度自行变换的。 重量级锁 计算机操作系统本有Monitor对象&#xff0c;称为管程。在java里面看不到此对…

synchronized锁升级之偏向锁

目录 一、什么是偏向锁&#xff1f; 二、偏向锁原理 三、偏向锁演示 四、偏向锁的处理流程 五、偏向锁的撤销 六、偏向锁的好处 一、什么是偏向锁&#xff1f; HotSpot作者经过研究实践发现&#xff0c;在大多数情况下&#xff0c;锁不仅不存在多线程竞争&#xff0c;而…

Java无锁、偏向锁、轻量级锁、重量级锁,锁升级过程

2. 锁 2.1 无锁 Java对象刚创建时还没有任何线程来竞争&#xff0c;说明该对象处于无锁状态&#xff08;无线程竞争它&#xff09;&#xff0c;这时偏向锁标识位是0&#xff0c;锁状态是01 。 2.2 偏向锁 偏向锁是指一段同步代码一直被同一个线程所访问&#xff0c;那么该…

偏向锁的获取和撤销详解

Java SE 1.6 为了减少获得锁和释放锁带来的性能消耗&#xff0c;引入了偏向锁和轻量级锁&#xff1b;在Java SE 1.6 中&#xff0c;锁共有4种状态&#xff0c;级别从底到高依次是&#xff1a;无锁状态、偏向锁状态、轻量级锁和重量级锁状态&#xff0c;这几种状态会随着竞争情况…

一篇文章说清 :无锁、偏向锁、轻量级锁、重量级锁

文章目录 前言一、无锁二、偏向锁三、轻量级锁&#xff08;自选锁&#xff09;四、重量级锁锁升级场景 前言 JDK1.6为了减少获得锁和释放锁所带来的性能消耗&#xff0c;引入了“偏向锁”和“轻量级锁”&#xff0c;所以在JDK1.6里锁一共有四种状态&#xff0c;无锁状态&#x…

synchronized的偏向锁、轻量级锁和重量级锁

文章目录 Java对象头偏向锁批量重偏向批量撤销 轻量级锁重量级锁Monitor 原理 Java对象头 普通对象 Mark Word在64 位虚拟机中的结构为 Mark Word后三&#xff08;两&#xff09;位表示 001&#xff1a;无锁状态101&#xff1a; 偏向锁00&#xff1a; 轻量级锁10&#xff1a…

Java synchronized偏向锁、轻量级锁、重量级锁

简介 synchronized锁共有偏向锁、轻量级锁、重量级锁三种类型&#xff0c;而这三种类型的加锁方式都是相同的&#xff0c;写代码时不用考虑加哪种锁。使用锁时对象首先会变为偏向锁状态&#xff0c;当有其它线程获取锁时会升级为轻量级锁&#xff08;没有竞争锁&#xff09;&am…

java 中的锁 -- 偏向锁、轻量级锁、自旋锁、重量级锁

之前做过一个测试&#xff0c;详情见这篇文章《多线程 1操作的几种实现方式&#xff0c;及效率对比》&#xff0c;当时对这个测试结果很疑惑&#xff0c;反复执行过多次&#xff0c;发现结果是一样的: 1. 单线程下synchronized效率最高&#xff08;当时感觉它的效率应该是最差…

偏向锁、轻量级锁、重量级锁的区别和解析

为了换取性能&#xff0c;JVM在内置锁上做了非常多的优化&#xff0c;膨胀式的锁分配策略就是其一。理解偏向锁、轻量级锁、重量级锁的要解决的基本问题&#xff0c;几种锁的分配和膨胀过程&#xff0c;有助于编写并优化基于锁的并发程序。 内置锁的分配和膨胀过程较为复杂&…

偏向锁是什么

偏向锁操作流程偏向锁&#xff0c;顾名思义&#xff0c;它会偏向于第一个访问锁的线程&#xff0c;如果在接下来的运行过程中&#xff0c;该锁没有被其他的线程访问&#xff0c;则持有偏向锁的线程将永远不需要触发同步 但是从我们跑的代码输出却看不到偏向锁这个东东。为啥对…

偏向锁的基本原理

偏向锁的基本原理 前面说过&#xff0c;大部分情况下&#xff0c;锁不仅仅不存在多线程竞争&#xff0c;而是总是由同一个线程多次获得&#xff0c;为了让线程获取锁的代价更低就引入了偏向锁的概念。怎么理解偏向锁呢&#xff1f;当一个线程访问加了同步锁的代码块时&#xff…

偏向锁,轻量级锁,重量级锁的核心原理

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章是关于并发编程中偏向锁&#xff0c;轻量级锁&#xff0c;重量级锁的核心原理知识记录。 本篇文章记录的基础知识&#xff0c;适合在学Java的小白&#xff0c;也适…

深入探究synchronize锁机制

synchronized 有三种方式来加锁&#xff0c;分别是&#xff1a; **1. 修饰实例方法&#xff1a;**作用于当前实例加锁&#xff0c;进入同步代码前要获得当前实例的锁 **2. 静态方法&#xff1a;**作用于当前类加锁&#xff0c;进入同步代码前要获得当前类的锁 **3. 修饰代码块&…

偏向锁的原理与实战

文章目录 1. 偏向锁的核心原理2. 偏向锁代码演示3. 偏向锁的膨胀与撤销 1. 偏向锁的核心原理 如果不存在线程竞争的一个线程获得了锁&#xff0c;那么锁就进入偏向状态&#xff0c;此时Mark Word的结构变为偏向锁结构&#xff0c;锁对象的锁标志位&#xff08;lock&#xff09;…

Java并发 | 19.[锁机制] 偏向锁(CAS)

文章目录 1. 偏向锁分析回顾轻量级锁偏向锁的优势 2. 偏向锁&#xff08;CAS&#xff09;2.1. 偏向锁流程概述2.2. 锁升级 参考资料 1. 偏向锁分析 回顾轻量级锁 在上文 Java并发 | 18.[锁机制] 轻量级锁&#xff08;CAS自旋锁&#xff09;中对轻量级锁进行过解析&#xff0c…