DOM

什么是DOM,DOM的作用,以及DOM与JavaScript的关系 一个想学web前端的初学者,如果在知乎中搜索推荐书目的话,得到的答案多数都是:首先,学习htlm+css;第二点就是阅读《JavaScript DOM 编程艺术》这本书。         作为一个初学的小白,JavaScript大概知道是个什么东西,但是DOM是什么??         在该书的前沿部分写道:本书的真正目的是让大家理解DOM脚本编程技术背后的思路和原则。然而在看了将近2/5的书 阅读详情

DOM

javascript 的组成部分

  • DOM (document object model) 文档对象模型
  • BOM (browers object model) 浏览器对象模型
  • ECMAScript js 的核心

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yUt9LniG-1577959454391)(./DOMltree.gif)]

DOM 节点

  • 节点分类
    • 元素节点:每个 HTML元素
      • 属性节点:HTML元素的属性
    • 文本节点:HTML元素内的文本
      • 注释节点:注释
    • 文档节点:整个文档document
  • 节点类型 — nodeType
    • 元素节点:1
      • 属性节点:2
    • 文本节点:3
      • 注释节点:8
    • 文档节点:9
  • 节点名称 — nodeName
    • 元素节点:与标签名相同
    • 文本节点:为#text
    • 注释节点:为#comment
    • 文档节点:为#document

DOM关系

  • childNodes 子节点
  • children 子元素
  • firstChild 第0个子节点
  • firstElementChild 第0个子元素
  • lastChild 最后一个子节点
  • lastElementChild 最后一个子元素
  • nextSibling 下一个兄弟节点
  • nextElementSibling 下一个兄弟元素
  • previousSibling 上一个兄弟节点
  • previousElementSibling 上一个兄弟元素
  • parentNode 父节点
  • offsetParent 定位父级

DOM 属性操作

注意 . 和 [] 都是 ECMAScript 中,对象的属性操作,对象属性的值会被存在内存中, 想要直接获取存在 文档中属性,或者 想把一个属性设置在文档中我们需要使用DOM 的属性操作

  • el.attributes 元素所有属性的集合
  • el.getAttribute(“attr”) 获取属性
  • el.setAttribute(“attr”,“val”) 设置属性
  • el.removeAttribute(“attr”) 移出属性
  • el.hasAttribute(“attr”) 判断是否有这个属性
  • 只要操作了innerHTML 元素的所有子元素上,存在内存中的事件和相关的属性都会丢失。如果希望元素的某些属性在操作了父级的innerHTML 之后,还存在就把这个属性加在 DOM 中

data 自定义属性

  • 在标签中定义data自定义属性:data-key=“value”;
  • 在js操作该元素的 data 自定义属性:el.dataset
    • 获取:el.dataset.key
    • 设置: el.dataset.key = “value”

节点操作

创建节点

语法:element document.createElement(“tagName”); 创建一个节点
参数:tagName 标签名称
返回值:创建好的节点

向页面中添加节点

  • el.appendChild(node) 在元素的末尾添加一个子级
  • el.insertBefore(newNode,oldNode) 在 oldNode 前边添加入 newNode
  • 在使用 appendChild 和 insertBefore时,如果添加是一个页面上已经存在的节点,会先从原位置删除,然后在添加到新的位置去。

替换节点

  • parent.replaceChild(newNode,oldNode) 替换子元素

删除节点

  • el parent.removeChild(el) 删除掉某个子元素 (推荐,会返回删除的节点,兼容性较好)
  • node.remove(); 删除自己

克隆节点

  • node.cloneNode(deep)
    • deep: 默认为false
    • deep 为 true, 克隆元素及属性,以及元素的内容和后代,并不会克隆所带的事件
    • deep 为 false, 只克隆元素本身,及它的属性

元素的尺寸获取

  • offset

    • offsetWidth 可视宽度(width(height) + padding + border)
    • offsetHeight 可视高度
    • offsetLeft 距离定位父级的left坐标 (通过计算后的页面展示的距离,如果有margin也会算进去)
    • offsetTop 距离定位父级的top坐标
  • client

    • clientWidth 可视宽度 - border (width(height) + padding)
    • clientHeight 可视高度 - border
    • clientTop 上边框宽度
    • clientLeft 左边框宽度
  • scroll

    • scrollWidth 内容宽度( 如果内容高度比元素高度要高,scrollHeight 就是内容的高度,否则就是元素的高度,包含padding )
    • scrollHeight 内容高度
    • scrollLeft 左右滚动距离
    • scrollTop 上下滚动距离
  • getBoundingClientRect() (新方法,不兼容 ie )

    • left 元素左侧距离可视区左侧距离
    • top 元素顶部距离可视区顶部距离(滚动后会发生变化,可能是负值)
    • right 元素右侧距离可视区左侧距离
    • bottom 元素底部距离可视区顶部距离
    • width 可视宽度
    • height 可视高度

表格相关操作

  • tBodies、tHead、tFoot、rows、cells

其他

  • createDocumentFragment
{
    let box = document.querySelector("#box");
    console.time(1);
    let inner = "";
    for(let i = 0; i < 1000; i++){
        inner += `<div>${i}</div>`;
    }
    box.innerHTML = inner;
    console.timeEnd(1);  // 速度最快

    console.time(2);
    // let fragment = document.createDocumentFragment();
    let div = '';
    for(let i = 0; i < 1000; i++){
        div = document.createElement("div");
        div.innerHTML = i;
    }
    box.appendChild(div);
    console.timeEnd(2);  // 速度最慢

    console.time(3);
    let fragment = document.createDocumentFragment();
    for(let i = 0; i < 1000; i++){
        let div = document.createElement("div");
        div.innerHTML = i;
        fragment.appendChild(div);
    }
    box.appendChild(fragment);
    console.timeEnd(3); // 速度比一般的元素快
}
  • NodeList 和 HTMLCollection

nodeList 和 HTMLCollection 区别

  • nodeList
    childNodes
    querySelectorAll
  • HTMLCollection
    children
    getElementsByTagName
    getElementsByClassName
  • 区别:
    • nodeList 有 forEach 方法,但是 HTMLCollection 没有forEach
    • HTMLCollection 每次调用时都会动态的去获取, nodeList 中 childNodes 有动态更新,但是querySelectorAll 就不会动态更新
Mamba-YOLO实战:环境配置+模型训练+精度调优全流程指南(附Colab代码) 在目标检测领域,一场由状态空间模型引发的技术革新正在悄然改写行业格局。近期国际顶级学术期刊连续发布的YOLOv5_mamba、FER-YOLO等突破性成果,不仅刷新了检测精度记录,更开创了结构化状态空间模型(SSM)与经典检测框架的创新融合范式。当前该领域涌现的十大标杆性研究,已在以下维度取得突破性进展:√ 遮挡目标识别准确率提升38%√ 小样本场景泛化能力增强2.7倍√ 视频流检测延迟降低至17ms√ 多目标交叉干扰抑制效果达SOTA。 阅读详情

相关推荐

遥感SCI期刊模板下载教程———IEEE TGRS、GRSL、JSTARS

IEEE下的期刊模板下载,以IEEE TGRS 为例。

海淀小天的blog 2万+

DOM0, DOM1, DOM2, DOM3, DOM4,知多少

我们经常操作DOM,其又分DOM0, DOM1, DOM2, DOM3, DOM4,请问君知多少,不要愁,一起来学习吧。

成长的程序世界,一起成长 2152

改进爬山算法之六:随机重启爬山算法(Random-Restart Hill Climbing,RRHC)

随机重启爬山算法(Random-Restart Hill Climbing,RRHC)是爬山算法的一种改进策略,是一种启发式搜索算法,旨在通过随机重启来克服传统爬山算法容易陷入局部最优解的局限性,并增加找到全局最优解的概率。随机重启爬山算法通过在多次运行中不断尝试不同的初始解,并在每次运行中执行标准的爬山算法,最终选择所有运行中找到的最佳解作为最终结果。(1)计算复杂度:由于需要多次运行爬山算法,因此算法的计算复杂度可能较高,特别是在解空间较大或每次迭代需要较长时间的情况下。

搏博的专栏 2206

DOM详解

文章目录一、什么是DOM1. 什么是DOM2. 为什么学习DOM3. 何时会用到DOM4. DOM标准5. DOM能做的5件事二、DOM树1. 什么是DOM树2. 何时会生成DOM树三、查找1. 不需要查找就可直接获得的4种节点对象:2. 按节点间关系查找3. 示例: 输出指定元素,并用节点间关系查找想要的元素4. 按HTML特征查找: 4个函数5.查找指定的元素,并修改元素的样式总结 一、什么是DOM 1. 什么是DOM 一套专门操作网页内容的对象和方法的集合。 2. 为什么学习DOM ECM

m0_48224507的博客 1万+

eda、gnm、anm究竟是个啥?

eda:主成分分析 gnm:高斯网络模型 anm:各向异性网络模型

药研猿的博客 1243

virtuoso根据原理图绘制版图并联接_virtuoso画原理图

Virtuoso Schematic Editor 电路仿真一、Virtuoso Schematic Editor 实验目的:掌握电原理图(schematic)设计输入方法。 [1]启动 IC Design 软件 启动 软件: 开机后运行......2.绘制原理图 新建工程后打开的是默认的原理图文件 SCHEMATIC1 PAG...存盘 完成原理图的绘制后,将原理图存盘. 三 . 用 Check...

weixin_33536190的博客 4144

DOM0、DOM1、DOM2、DOM3事件区别

DOM事件 DOM 0级事件具有极好的跨浏览器优势,会以最快的速度绑定。某一个元素的同一个行为绑定不同的方法在行内会分别执行。某一个元素的同一个行为绑定不同的方法在script标签中后面的方法会覆盖前面的方法。 <body> // 某一个元素的同一个行为绑定不同的方法在行内会分别执行 <div id="box" "fun1();fun2()">点我</...

不丶甜的博客 9068

GBT 27930-2015/2023国标充电协议A类CAN报文ID说明

国标充电CAN的ID,仅供学习参考。

qqq080的博客 7803

到底什么是DOM0、DOM2、DOM3??

dom事件有好几个级别,分别是DOM0级、DOM1级、DOM2级、DOM3级,每个级别的事件定义方式不同,特点也不同,下边就具体分析下: DOM0级 分两种: 在标签中直接写 onclick事件 <input id="myButton" type="button" value="Press Me" οnclick="alert('thanks');" > 在js中写 onclick=function() {} 函数 document.getElementById("myButt.

卡卡西:一个擅长拷贝的前端程序员 5273

2024届数字IC秋招-华为机试-数字芯片-笔试真题和答案(三)(含2022年和2023年)

此部分包含华为机试真题,方向是数字芯片,内容详细包括设计、验证、后端等,大部分题目给出参考答案。华为机试都是从题库里抽题目,所以这些题目还是很有参考性的,甚至是完全一样,可以搜到的。(题目内容较多,将分开编写几个文章)A.错误B.正确参考答案:BA.getB.try_getC.peekD.put参考答案:B。

qq_42135020的博客 1917

TMS320F28335调试跟踪的问题:DSP从上电复位,一直到执行main()的第一条语句之间,都干了些什么,以及CCS调试时程序查找的问题

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1213

虚拟DOM和真实DOM

目录 一:什么是DOM? 二:什么是虚拟DOM? 三:虚拟DOM 的工作过程? 四:虚拟DOM的优点?缺点? 五:真实dom和虚拟dom的区别? 一:什么是DOM? DOM就是文档对象模型,HTML的文档document页面时一切的基础,没有它dom就无从谈起。 当我们创建好一个页面并加载到浏览器的时候,DOM就悄然而生,它会把网页文档转换为一个文档对象,主要功能就是处理网页内容。在这个文档给对象里,所有元素呈现出一种层次,就是除了顶级元素html外,其他元素都被包含在另...

xxxx的博客 4027

RT-DETR改进前必看 - Ultralytics调参 1:1还原RT-DETR官方版本实验环境,更方便改进

的项目文件中集成了YOLOv3v5v6v8v9v10rt-detr11以及其中不同大小的模型结构,更方便我们学习和使用。的参数配置在路径下,其中中设置了模型在训练Train验证Val/Test预测Predict可视化Visualize导出Export超参数Hyperparameters、以及跟踪Tracker的相关参数。在调参过程中主要涉及训练Train和超参数Hyperparameters。下面主要介绍一下初始超参数Hyperparameters。

Limiiiing的博客 7962

虚拟DOM和真实DOM的区别

虚拟DOM与真实DOM的区别(注意:需不需要虚拟DOM,其实与框架的DOM操作机制有关): 虚拟DOM不会进行排版与重绘操作 虚拟DOM进行频繁修改,然后一次性比较并修改真实DOM中需要改的部分(注意!),最后并在真实DOM中进行排版与重绘,减少过多DOM节点排版与重绘损耗 真实DOM频繁排版与重绘的效率是相当低的 虚拟DOM有效降低大面积(真实DOM节点)的重...

CaseyWei 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

什么是虚拟DOM

一、前端 - 从接收html 到 体现在页面上的流程: 1.创建DOM树(分析HTML元素,构建一颗DOM树) 2.创建StyleRules(分析CSS文件和元素上的inline样式,生成页面的样式表) 3.创建Render树(将DOM树和样式表,关联起来) 4.布局Layout(浏览器开始布局,为每个Render树上的节点确定一个在显示屏上出现的精确坐标) 5.绘制Painting(调用每个节点paint方法,把它们绘制出来) 二、什么是DOM: Document Object Model(文档对象

weixin_44439675的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

谈谈DOM0,DOM1,DOM2,DOM3

在W3C协会制定的DOM标准中,DOM标准可以分为DOM1,DOM2,DOM3三个版本。事实上,DOM0级标准是不存在的,所谓DOM0只是DOM历史坐标中的一个参照点。

Dax1_的博客 3674

精雕软件(JDpaint) 5.5 绿色版

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

【小白入门前端】DOM、DOM树和DOM对象

本文介绍了DOM(文档对象模型)的核心概念与作用。DOM作为HTML/XML文档的编程接口,将网页转换为树形结构(DOM树),使JavaScript能够动态访问和修改页面内容、结构及样式。DOM树以层级关系组织网页元素,DOM对象则提供操作这些元素的属性和方法。通过DOM,开发者可以高效定位节点、实时更新网页,实现交互功能。简言之,DOM是连接网页与JavaScript的桥梁,通过树形结构和对象化操作实现动态网页控制。

Mimany的博客 1304

DOM 简介 | 深入了解DOM

W3C DOM由以下三部分组成:核心DOM - 针对任何结构化文档的标准模型。XML DOM - 针对XML文档的标准模型。HTML DOM - 针对HTML文档的标准模型。DOM是一种提供对文档访问或修改方法的模型,它的范围很广,但对于 web 开发者来说,往往都认为它是指JavaScript在浏览器访问和修改html 文档的一种技术,但实际上范围远不局限在这里。

青春木鱼的博客 1万+

JS--DOM0, DOM1, DOM2, DOM3事件的区别与详解

说明 本文介绍JavaScript中DOM0, DOM1, DOM2, DOM3事件级别的含义及区别。 DOM介绍 DOM(Document Object Model,文档对象模型)是针对HTML文档和XML文档的一个API。DOM描绘了一个层次化的节点树,允许开发人员添加、移出和修改页面的某一部分。 DOM脱胎于Netscape及微软公司创始的DHTML(动态HTML)。现在它已经成为表现和操作页面标记的真正跨平台、语言中立的方式。

IT利刃出鞘的博客 2901

什么是DOM0,DOM2,DOM3?

事件是javascript和HTML交互基础, 任何文档或者浏览器窗口发生的交互, 都要通过绑定事件进行交互;比如鼠标点击事件、敲击键盘事件等。这样的事件行为都是前端DOM事件的组成部分,不同的DOM事件会有不同的触发条件和触发效果。 本文就将带大家深入浅出地了解DOM事件的那些属性和方法。 1.DOM级别与DOM事件: DOM级别一共可以分为四个级别:DOM0级、DOM1级、DOM2级和DOM3级。而DOM事件分为3个级别:DOM0级事件处理,DOM2级事件处理和DOM3级事件处理。 有人可能会疑惑,为

云端-公子清 5187

什么是虚拟dom

虚拟dom就是一个特殊的对象。 Vue之所以运行高效,因为采用了虚拟dom,减少了对真实的dom操作。 一、dom和虚拟dom对比 //dom &amp;lt;ul id='test'&amp;gt; &amp;lt;p class='hehe'&amp;gt;这里是p标签&amp;lt;/p&amp;gt; &amp;lt;/ul&amp;gt; //对应的虚拟dom对象 let vdom={ tag:'ul',

WhyBecause的博客 1万+

javascript DOM详解之DOM2与DOM3

DOM2与DOM3主要是在DOM1的基础上引入更多的交互能力,支持了更高级的XML特性。 DOM2做的主要的扩展子集具体为: DOM Level 2 Core:在一级核心的基础上,为节点添加了更多的方法和属性。 DOM Level 2 Views:为文档定义了基于样式信息的不同视图 DOM Level 2 Events:说明了如何使用事件与DOM进行交互。 DOM Level 2 Sty

seacean2000的专栏 1万+

1-虚拟dom的两种创建方式,真实dom与虚拟dom的区别

虚拟 DOM(Virtual DOM)是 React 的核心概念之一。它是一个轻量级的 JavaScript 对象,用于描述真实 DOM 的结构和内容。React 通过虚拟 DOM 来提高性能,避免直接操作真实 DOM 带来的性能开销。

2203_75479159的博客 1522

真实DOM和虚拟DOM

文章目录如何高效操作DOM什么是DOM浏览器真实解析DOM的流程为什么说操作DOM耗时如何高效操作DOM虚拟DOM什么是虚拟DOM为什么要有虚拟DOM虚拟DOM的作用Vue中的虚拟DOM是如何实现的diff算法创建节点删除节点更新节点 如何高效操作DOM 什么是DOM DOM(Document Object Model,文档对象模型)是 JavaScript 操作 HTML 的接口. 浏览器真实解析DOM的流程 为什么说操作DOM耗时 线程切换 浏览器包含渲染引擎(也称浏览器内核)和 JavaS

qq_40619263的博客 2341

从VirtualDom(虚拟Dom)到真实DOM

虚拟Dom实现为真实Dom结构并进行更新的集合说明,包含虚拟Dom和真实Dom的互相转换以及更新时候的比较,在react和Vue以及后续版本应用的逻辑说明。本文展示的代码仅仅是简单初级代码,关于React和Vue中的diff算法和真实dom以及虚拟dom的互相转换请参考react和Vue的官方源码。

前端小记 3533
上一篇: vue v-for实现hover效果,点击效果
下一篇: less 函数
ZhouMin8877
博客等级 码龄9年 4粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值