【浏览器】聊聊DOM
【浏览器】聊聊DOM
博客说明
文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!
说明
作为前端开发,在以前的工作中大多是和DOM打交道,到了现在,大多数前端工程师都是和Vue打交道了。让Vue去和DOM交流。这并非是讽刺,只是说明这个事实,同时也说明了Vue的强大。
但,想要更深的了解前端,需要打开Vue的保护伞,看看DOM,更甚的是,熟悉DOM。走向底层,同时也走向高层!
没准下一代“Vue”的开发者不姓尤。
什么是DOM?
首先来介绍一下,什么是DOM,这个臭了的问题,还是在这里得以继续延伸,我很抱歉,但是还是不能去掉这个过程。
听听W3C的
DOM全程是文档对象模型(Document Object Model),是一项 W3C (World Wide Web Consortium) 标准。它主要定义了访问文档的标准:
W3C 文档对象模型(DOM)是中立于平台和语言的接口,它允许程序和脚本动态地访问、更新文档的内容、结构和样式。
W3C DOM 标准被分为 3 个不同的部分:
- Core DOM - 所有文档类型的标准模型
Document:文档对象
Element:元素对象
Attribute:属性对象
Text:文本对象
Comment:注释对象
Node:节点对象,其他5个的父对象
- XML DOM - XML 文档的标准模型
- HTML DOM - HTML 文档的标准模型
听听总结的
DOM就是将标记语言文档的各个组成部分,封装为对象。然后开发者(前端切图仔)就可以使用这些对象,对标记语言文档进行CRUD的动态操作。
什么是HTML DOM?
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。注意,通过 HTML DOM,JavaScript 能够访问和改变 HTML 文档的所有元素。
HTML DOM 是 HTML 的标准对象模型和编程接口。它定义了:
- 作为对象的 HTML 元素
- 所有 HTML 元素的属性
- 访问所有 HTML 元素的方法
- 所有 HTML 元素的事件
换言之:HTML DOM 是关于如何获取、更改、添加或删除 HTML 元素的标准。
总结
咱们熟悉的总结又来了️,这次不多说,HTML DOM就是一套对HTML元素的CURD,CURD
在看各位没有不熟悉,没有不兴奋的吧。
Document:文档对象
Document对象的属性和方法:HTML DOM Document 对象
创建(获取)
在html dom模型中可以使用window对象来获取,例如在浏览器中输入document,就会返回一个文档对象。
window.document
document
Element对象
Element 对象可以拥有类型为元素节点、文本节点、注释节点的子节点。
获取Element对象的方法
getElementById():根据id属性值获取元素对象。id属性值一般唯一
getElementsByTagName():根据元素名称获取元素对象们。返回值是一个数组
getElementsByClassName():根据Class属性值获取元素对象们。返回值是一个数组
getElementsByName():根据name属性值获取元素对象们。返回值是一个数组
Element属性和方法
乍一看实在是太多了,多得我那是根本不想数,但是又不想直接CV在此。
属性 / 方法 | 描述 |
---|---|
element.accessKey | 设置或返回元素的快捷键。 |
element.appendChild() | 向元素添加新的子节点,作为最后一个子节点。 |
element.attributes | 返回元素属性的 NamedNodeMap。 |
element.childNodes | 返回元素子节点的 NodeList。 |
element.className | 设置或返回元素的 class 属性。 |
给个开头,再把完全的地址贴出来,HTML DOM Element 对象
Attr对象
在 HTML DOM 中,Attr 对象表示 HTML 属性,HTML 属性始终属于 HTML 元素。
操作方法
removeAttribute():删除属性
setAttribute():设置属性
Attr的属性和方法
DOM 4 警告!
在 W3C DOM Core 中,Attr (attribute) 对象从 Node 对象继承所有属性和方法。
在 DOM 4 中,Attr 对象不再从 Node 继承。为了保证未来的代码安全,应该避免在属性对象上使用节点对象的属性和方法。
NamedNodeMap 对象
在 HTML DOM 中,NamedNodeMap 对象表示元素属性节点的无序集合,NamedNodeMap 中的节点可通过名称或索引(数字)来访问。
Text对象
Text 对象代表 HTML 表单中的文本输入域,该元素可创建一个单行的文本输入字段。当用户编辑显示的文本并随后把输入焦点转移到其他元素的时候,会触发 onchange 事件句柄。
Text的属性和方法
Comment对象
Comment是注释对象,在对HTML编码时,总会有一些注释,但是注释的代码,众所周知,是没有被执行的。在HTML中,它就存放在Comment对象中。
createComment() 方法可创建注释节点,一般对这个对象的操作比较的少,也没啥地址可贴的了。
最后说的话
在写这篇文章的时候,我一直在思考有没有必要写这样的一篇文章,其实感觉写这样的文章很难,尽管大多数是一些标准和协议,但往往就是这些标准和协议难以突破,同时自己也在慢慢积累与沉淀,能沉下心写,甚至抄点基础的东西,补足那个圆的一节,感觉会很踏实很多。
本文也是第二次扩写,从500到1500。有机会,或者再有累计的话再扩写吧,到时希望在这些标准之上有所突破哈。
感谢
万能的网络
公众号-归子莫,小程序-小归博客
【浏览器】聊聊DOM的更多相关文章
- Javascript 强制浏览器渲染Dom文档
在Cordova+Framework7开发Hybrid App时,在iPhone 7上遇到一个诡异的现象(Chrome浏览器.Android都正常):js修改手风琴中的input文本框的值后,但页面仍 ...
- Chrome浏览器控制台[DOM] Password field is not contained in a form:
[DOM] Password field is not contained in a form: ( [DOM]密码字段不包含在form表单中) 解决方案:添加一层form标签 <div cla ...
- 浏览器兼容——DOM事件封装函数
//封装函数var eventUtil={ //添加事件 addHandler:function(element,type,handler){ if(element.addE ...
- DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢,而是说操作了这个对象后,会触发一些浏览器行为(转)
一直都听说DOM很慢,要尽量少的去操作DOM,于是就想进一步去探究下为什么大家都会这样说,在网上学习了一些资料,这边整理出来. 首先,DOM对象本身也是一个js对象,所以严格来说,并不是操作这个对象慢 ...
- 转---JS 一定要放在 Body 的最底部么?聊聊浏览器的渲染机制
作者:德来 segmentfault.com/a/1190000004292479 如有好文章投稿,请点击 → 这里了解详情 一.从一个面试题说起 面试前端的时候我喜欢问一些看上去是常识的问题.比如: ...
- DOM,浏览器,javascript,html之间的关系
来源于:https://github.com/hucheng91/myBlog/blob/master/web/dom/dom.md DOM定义 DOM可以以一种独立于平台和语言的方式访问和修改一个文 ...
- 浏览器中的BOM和DOM
BOM 浏览器对象模型 提供了独立于内容而与浏览器窗口进行交互的对象.描述了与浏览器进行交互的方法和接口,可以对浏览器窗口进行访问和操作,譬如可以弹出新的窗口,改变状态栏中的文本,对Cookie的支持 ...
- 4 HTML&JS等前端知识系列之Dom的基础
preface 主要聊聊dom的编程,包含下面的内容: what's the dom dom选择器 innerText 替换或写入文本 value 获取input,select,textarea的值 ...
- 【JavaScript实用技巧(二)】Js操作DOM(由问题引发的文章改版,新人大佬都可)
[JavaScript实用技巧(二)]Js操作DOM(由问题引发的文章改版,新人大佬都可!) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人 ...
随机推荐
- P4450-双亲数,P5221-Product,P6055-[RC-02]GCD【莫比乌斯反演,杜教筛】
除了最后一题都比较简单就写一起了 P4450-双亲数 题目链接:https://www.luogu.com.cn/problem/P4450 题目大意 给出\(A,B,d\)求有多少对\((a,b)\ ...
- P4770-[NOI2018]你的名字【SAM,线段树合并】
正题 题目链接:https://www.luogu.com.cn/problem/P4770 题目大意 给出一个长度为\(n\)的字符串\(S\).\(q\)次询问给出一个串\(T\)和一个区间\([ ...
- 分布式、微服务必须配个日志管理系统才优秀,Exceptionless走起~~~
前言 在真实的项目中,不管是功能日志.错误日志还是异常日志,已经是项目的重要组成部分.在原始的单体架构,通常看日志的方式简单粗暴,直接登录到服务器,把日志文件拷贝下来进行分析:而如今分布式.微服务架构 ...
- Javascript设计模式之原型模式、发布订阅模式
原型模式 原型模式用于在创建对象时,通过共享某个对象原型的属性和方法,从而达到提高性能.降低内存占用.代码复用的效果. 示例一 function Person(name) { this.name = ...
- Unity——对象池管理
Unity对象池管理 一.Demo展示 二.逻辑 在游戏中会出现大量重复的物体需要频繁的创建和销毁:比如子弹,敌人,成就列表的格子等: 频繁的创建删除物体会造成很大的开销,像这种大量创建重复且非持续性 ...
- C#开发BIMFACE系列43 服务端API之图纸拆分
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在上一篇博客<C#开发BIMFACE系列42 服务端API之图纸对比>的最后留了一个问题,在常规业务场景下,一 ...
- HTTP基础系列之:一文搞懂URL
一般我们日常在上网的时候,会在浏览器的地址栏里输入一个网站的 "网址",点击下回车,就会跳到你想去的网站,就类似这样 但其实,叫做 "网址" 并不是特别的准确, ...
- pip安装加速
PIP国内镜像源 名称 源地址 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.cn/s ...
- uoj21 缩进优化(整除分块,乱搞)
题目大意: 给定一个长度为\(n\)的序列 让你找一个\(x\),使得\(ans\)尽可能小 其中$$ans=\sum_{i=1}^{n}\lfloor\frac{a_i}{x}\rfloor + \ ...
- SpringBoot入门05-全局配置文件
springboot全局配置文件作用是设置或修改默认设置 springboot全局配置文件有下面两种方式 application.xml配置文件 示例 server.port=8088 server. ...