一.DOM介绍 DOM中的三个字母,D(文档)可以理解为整个Web加载的网页文档;O(对象)可以理解为类似window对象之类的东西,可以调用属性和方法,这里我们说的是document对象;M(模型)可以理解为网页文档的树型结构...PS:IE中的所有DOM对象都是以COM对象的形式实现的,这意味着IE中的DOM可能会和其他浏览器有一定的差异。 1.节点 加载HTML页面时,Web浏览器生成一个树型结构,用来表示页面内部结构。...虽然IE8已经修复这个bug,但为了更好的兼容,开发人员只有尽可能避免使用getAttribute()访问HTML属性了,或者碰到特殊的属性获取做特殊的兼容处理。...5.setAttribute()方法 setAttribute()方法将设置元素中某个属性和值。它需要接受两个参数:属性名和值。如果属性本身已存在,那么就会被覆盖。...bug,但还是不建议使用。
XML DOM - 导航节点可以使用节点之间的关系来导航节点。导航 DOM 节点通过节点之间的关系在节点树中访问节点,通常被称为"导航节点"。...中的节点树的一部分以及节点之间的关系:DOM - 父节点所有节点都有一个父节点。...previousSibling(): 使用 previousSibling() 方法和自定义函数获取节点的前一个兄弟节点。XML DOM 获取节点值nodeValue 属性用于获取节点的文本值。...获取元素的值在 DOM 中,一切都是节点。元素节点没有文本值。元素节点的文本值存储在子节点中,这个节点被称为文本节点。要检索元素的文本值,必须检索元素的文本节点的值。...在 book 元素中存在属性时,删除属性XML DOM 添加节点添加节点 - appendChild()appendChild() 方法将子节点添加到现有节点。
HTML DOM 模型被构造为对象的树: 通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。...) - appendChild() 要创建新的 HTML 元素 (节点)需要先创建一个元素,然后在已存在的元素中添加它。...;将文本节点添加到 元素中: para.appendChild(node);最后,在一个已存在的元素中添加 p 元素。...查找已存在的元素:var element = document.getElementById("div1"); 添加到已存在的元素中:element.appendChild(para); 创建新的 HTML...HTMLCollection 看起来可能是一个数组,但其实不是。 你可以像数组一样,使用索引来获取元素。
属性 说明 add(value) 将给定的字符串添加到列表中。...(1)innerHTML属性 读模式:返回调用元素的所有节点(包括元素、注释和文本节点)对应的HTML标记; 写模式:根据指定的值创建新的DOM树,然后用这个DOM树完全替换调用元素原先的所有子节点...(包括元素、注释和文本节点)对应的HTML标记; 写模式:根据指定的值创建新的DOM树,然后用这个DOM树完全替换调用元素。...document.body.contains(div); // true 掩码 节点关系 1 无关(给定的节点不再当前文档中) 2 居前(给定的节点在DOM树中位于参考节点之前) 4 居后(给定的节点在...DOM树中位于参考节点之后) 8 包含(给定的节点是参考节点的祖先) 16 被包含(给定的节点是参考节点的后代) 示例:通用的contains函数 function contains(refNode,
DOM描绘了一个层次变化的节点树,允许开发人员添加、移除和修改页面的某一部分。 一、节点层次 在HTML页面中,文档元素始终都是元素。 1....true NodeList对象拥有length属性,但并不是Array实例;其是基于DOM结构动态执行查询的结果,因此DOM结构的变化能够自动反应在NodeList对象中。...可以通过方括号,也可以使用item()方法访问NodeList中的节点。 ?...;false:只复制节点本身 normalize() 处理文档树中的文本节点 所有节点都有上述方法!...二、DOM操作技术 1. 动态脚本 在元素添加到页面之前,是不会下载外部文件的。
获取指定节点的最后一个子节点 childNodes 获取所有的子节点,返回一个NodeList集合,但此集合为动态集合 var childNodes = parentElement.childNodes...解决方案 如果可以判断出什么情况下是空白节点(内容为回车符的空白节点)根据空白节点产生的情况来进行处理 根据空白节点产生的情况来进行处理DOM中的空白符 使用getElementByTagName...删除节点 removeChild()方法实现从HTML页面中删除指定节点。 被移除的这个子节点仍然存在于内存中,只是没有添加到当前文档的DOM树中。 因此,你还可以把这个节点重新添加回文档中。...如果该节点已经存在于DOM节点树结构中的话,则它会被从原始位置删除。 使用 Node append Child0或其他类似的方法将拷贝的节点添加到文档中之前,那个拷贝节点并不属于当前文档树的一部分。
每完成一个任务单元都把节点添加到 DOM 上。...请记住,浏览器是可以打断渲染流程的,如果还没渲染完整棵树就把节点添加到 DOM,用户会看到残缺不全的 UI 界面,给人一种很不专业的印象,这肯定不是我们想要的。...因此需要重构节点添加到 DOM 这部分代码,整棵树(fiber)渲染完成之后再一次性添加到 DOM,即 React commit 阶段。...获取,因为 children 不只是函数组件使用时包含的子孙节点,还需要组合组件本身的结构 注意以下代码省略了未改动部分。...Redact 如果在渲染阶段收到新的更新会直接丢弃已渲染的树,再从头开始渲染。而 React 会用时间戳标记每次更新,以决定更新的优先级。 源码还有很多优化等待读者去发现。。。
(node)将父元素添加到容器container中触发浏览器渲染页面。...这个顺序不能反过来,也就是说只有整个真实dom树构建完成才能添加到容器中。假设这个顺序反过来,比如先执行container.appendChild(node),则触发浏览器回流。...真实React代码中并没有使用这个api,因为有兼容性问题。...dom节点,并保存在fiber.dom属性中 if(!...dom元素 需要执行函数才能获取对应的children节点,而不是直接从props.children获取 由于函数组件没有对应的fiber节点,因此在commit阶段在找父fiber节点对应的dom时,
document对象包含了文档的基本信息,我们可以通过JavaScript对HTML页面中的所有元素进行访问、修改。 1.3节点 DOM的最小组成单位叫做节点(node)。...文档的树形结构(DOM树),就是由各种不同类型的节点组成。每个节点可以看作是文档树的一片叶子。 节点的类型有七种。...1.4节点树 一个文档的所有节点,按照所在的层级,可以抽象成一种树状结构。这种树状结构就是DOM。 最顶层的节点就是document节点,它代表了整个文档。...,用来获取三种关系的节点。...document.getElementById():返回匹配指定ID属性的元素节点对应的对象,如果没有发现匹配的节点,则返回null。
二、nodeName、nodeValue以及nodeType和innerHTML和value DOM将网页表示为一颗树,该树的节点类型有多种。...所以在构造DOM树时,根元素并不适合作为根节点,所以就出现了文档节点,而根节点作为文档节点的子节点。...5——ENTITY REFERENCE实体引用节点。实体引用节点可以被用于表示DOM树中的一个实体引用。 6——ENTITY实体节点,表示文档中已分析或未分析的实体。...可使用value获取其属性值。 类似的,form里的DOM元素(input select checkbox textarea radio)值获取时都使用value。...()//创建一个DOM片段 createDocumentFragment()创建一个文档碎片,把所有的节点都加在上面,最后把文档碎片一次性添加到document中,比一次次修改DOM更高效。
(node)将父元素添加到容器container中触发浏览器渲染页面。...这个顺序不能反过来,也就是说只有整个真实dom树构建完成才能添加到容器中。假设这个顺序反过来,比如先执行container.appendChild(node),则触发浏览器回流。...真实React代码中并没有使用这个api,因为有兼容性问题。...dom节点,并保存在fiber.dom属性中 if(!...dom元素需要执行函数才能获取对应的children节点,而不是直接从props.children获取由于函数组件没有对应的fiber节点,因此在commit阶段在找父fiber节点对应的dom时,需要判断是否存在该
通常的经验法则是尽量减少更新DOM,这也就意味着将DOM的改变分批处理,并在“活动”文档书之外执行这些更新。 当需要创建一个相对比较大的子树,应该在子树完全创建之后再将子树添加到DOM树中。...当将文档碎片添加到DOM树时,不是将碎片本身添加到DOM树中,而是将文档碎片的内容添加进DOM树中。该操作是十分方便的。...在为DOM树添加新节点时文档碎片是非常有用的。但在更新DOM现有的部分时,仍然可以批处理提交修改。...但更清晰的方法是使用addEventListener()方法。在IE8.0之前的版本中没有该方法,在这些老版本浏览器中应该使用attachEvent()。 ...考虑到可以从每次点击时创建的事件对象中获取数值,因此为每个数值维持按钮节点和计数器之间引用是十分低效的。
DOM描绘了一个层次变化的节点树,允许开发人员添加、移除和修改页面的某一部分。 一、节点层次 在HTML页面中,文档元素始终都是元素。 1....true NodeList对象拥有length属性,但并不是Array实例;其是基于DOM结构动态执行查询的结果,因此DOM结构的变化能够自动反应在NodeList对象中。...可以通过方括号,也可以使用item()方法访问NodeList中的节点。...;false:只复制节点本身 normalize() 处理文档树中的文本节点 所有节点都有上述方法!...(1)查找元素 方法 说明 getElementById() 只返回文档中第一次出现的元素;如果不存在带有相应id的元素,则返回null getElementsByTagName() 返回的是包含零或多个元素的
二、DOM 树的结构 DOM 树的结构是层级的,每个节点都有其父节点、子节点和兄弟节点。 父节点 (Parent Node): 包含当前节点的节点。...子节点 (Child Node): 被当前节点包含的节点。 兄弟节点 (Sibling Node): 与当前节点拥有相同父节点的节点。 三、如何使用 JavaScript 操作 DOM?...获取元素: getElementById(): 通过 ID 获取元素。...添加到 myElement 的末尾 insertBefore(): 将新元素添加到父元素的指定子节点之前。...这个例子展示了如何使用 JavaScript 操作 HTML DOM(文档对象模型)中的元素,包括选择元素、修改元素内容以及响应用户的交互动作。
虽然并非所有的元素节点都包含属性,但所有的属性一定都被元素节点包含。 3.节点操作 3.1获取元素节点 获取元素节点有4种方法,分别通过元素ID,标签名字,类名和css选择器来获取。...3.1.4 CSS选择器 还有html5中新增的两个方法,让我们可以用css选择器的方法来选择DOM节点,这两个方法必须在IE8以上的现代浏览器中才能使用。...document.getElementsByTagName(“body”)[0].childNodes; parentNode,获取当前节点的父节点元素,如果指定节点没有父元素那么会返回null。...,那么直接对p元素使用nodeValue会得到一个null空值。...qs.split("&") : [], item = null, name = null, value = null, //在 for 循环中使用 i = 0,
将HTML字符转换为DOM节点并动态添加到文档中 将字符串动态转换为DOM节点,在开发中经常遇到,尤其在模板引擎中更是不可或缺的技术。...字符串转换为DOM节点本身并不难,本篇文章主要涉及两个主题: 1 字符串转换为HTML DOM节点的基本方法及性能测试 2 动态生成的DOM节点添加到文档中的方法及性能测试 本文的示例:...它被当做一个轻量版的 Document 使用,用于存储已排好版的或尚未打理好格式的XML片段。...我们也可以使用 frag.firstChild 来获取生成的div。 1.1.3 性能测试 下面我们来简单比对下上面三种方法的性能,只是测试生成单个节点,在实际使用中并不一定有实际意义。...createDocumentFragment方法和createNode方法,在这轮测试中不相上下。下面我们看看将生成的DOM元素动态添加到文档中的方法。
W3C 标准给我们提供了一系列的函数, 让我们可以操作: 网页内容 网页结构 网页样式 DOM树 一个页面的结构是一个树形结构, 称为 DOM 树....示例: let newDiv = document.createElement("div"); 说明: 该方法创建了一个新的 div 元素,但此时它还没有被添加到页面中,需要使用其他方法将其插入到 DOM...的文本节点,可以将它插入到一个元素中显示在页面上。 4. 元素节点.removeChild(element) 功能: 从 DOM 中删除子元素。...元素节点.previousElementSibling 返回指定元素的前一个兄弟元素(相同节点树层中的前一个元素节点)。...元素节点.nextElementSibling 返回指定元素的后一个兄弟元素(相同节点树层中的下一个元素节点)。 事件概述 什么是事件 JS 要构建动态页面, 就需要感知到用户的行为.
5——ENTITY REFERENCE实体引用节点。实体引用节点可以被用于表示DOM树中的一个实体引用。 6——ENTITY实体节点,表示文档中已分析或未分析的实体。...4、innerHTML innerHTML只对元素节点有用,获取元素节点内容,也就是元素节点包含的文本节点的值。其他节点使用nodeValue。...类似的,form里的DOM元素(input select checkbox textarea radio)值获取时都使用value。...可以通过多种方法来查找DOM元素: a、使用getElementById()和getElementByTagName()和getElementsByClassName()方法 b、通过一个元素节点的parentNode...()//创建一个DOM片段 createDocumentFragment()创建一个文档碎片,把所有的节点都加在上面,最后把文档碎片一次性添加到document中,比一次次修改DOM更高效。
3-DOM节点:网页一切内容皆节点 3.1-DOM节点介绍 1.什么是节点:在HTML文档中,一切皆节点(HTML文档本身...、标签、属性、注释内容、文本) 2.什么是元素:元素在HTML中叫做标签,在JS的dom对象中称为元素(可以理解为标签的面向对象的叫法) 3.HTML标签属于节点的一种,叫做元素节点 4.节点三要素:...DOM树体现着HTML页面的层级结构,学习中经常提到的父元素子元素的说法也是建立在树这种数据结构的基础之上的,而DOM文档树则包含文档中所有内容。...2.png HTML页面中的所有内容都会体现在DOM文档树中,要理解这种结构,对构成它的每个节点就要先有了解。...():dom推荐方式 动态创建一个dom对象(空标签,需要自己设置属性)在内存中 需要使用appendChild来添加到HTML document.write():慎用,因为可能会覆盖原本的内容 覆盖内容的原理了解即可