DOM--(Node)

xiaoxiao2021-02-28  6

DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序编程接口),它描绘了一个层次化的节点树。

Node类型

1. Node.ELEMENT_NODE 元素节点 2. Node.ATTRIBUTE_NODE 属性节点 3. Node.TEXT_NODE 文本节点 4. Node.CDATA_SECTION_NODE CDATA节点(只针对XML文档,表示CDATA区域) 5. Node.ENTITY_REFERENCE_NODE 实体引用名称节点 6. Node.ENTITY_NODE 实体名称节点 7. Node.PROCESSING_INSTRUCTION_NODE 处理指令节点 8. Node.COMMENT_NODE 注释节点 9. Node.DOCUMENT_NODE 文档节点 10. Node.DOCUMENT_TYPE_NODE 文档类型节点 11. Node.DOCUMENT_FRAGMENT_NODE 文档片段节点 12. Node.NOTATION_NODE DTD声明节点

【属性】

• nodeType 与数值(1-12)比较 • nodeName 返回元素的标签名 • nodeValue • childList (firefox3.6+ & chrome) 操作类名的方法 - X.childList.add(类名) - X.childList.contains(类名) - X.childList.remove(类名) - X.childList.toggle(类名) 如果存在,删除;如果不存在,添加 • childElementCount 返回子元素个数(不包含文本节点和注释节点) • firstElementChild 返回第一个元素(firstChild元素版) • lastElementChild 返回最后一个元素(lastChild元素版) • previousElementSibilng 返回前辈元素(previousSibling元素版) • nextElementSibling 返回后辈元素 (nextSibling元素版) • 自定义属性 (加上前缀data,比如data-xx,使用时dataset.xx) (firefox6+ & chrome) • innerHTML (写入时会改变DOM子树) 读取时返回or替换所有子节点,写入后会替换原来所以子节点 (不支持inner HTML的元素:col、colgroup、frameset、head、html、style、table、tbody、thead、tfoot、tr) • innerText(写入时会改变DOM子树,永远只会生成当前元素的一个子文本节点) 读取时,将文档树的所有文本拼接起来;写入时,删除元素的所有子节点,插入文本 不支持innerText属性的浏览器可以使用textContent属性。 textContent还会返回行内样式和行内脚本代码,innerText则会忽略行内样式和行内脚本。 • outerHTML (写入时会改变DOM子树) 读取时返回or替换调用它的元素及其所有子节点,写入后替换元素x的整个DOM树 • outerText (不常用) 读取时,与innerText结果一样;写入时,新的文本节点会完全替换整个元素 • insertAdjacentHTML(插入位置,要插入的HTML文本) 插入位置四种值 - beforebegin 在当前元素前插入同胞元素 - afterbegin 在当前元素下插入新的子元素/在第一个子元素前插入新的子元素 - beforeend 在当前元素下插入新的子元素/在最后一个子元素后插入新的子元素 - afterend 在当前元素后插入同胞元素

!使用innerHTML、outerHTML、insertAdjacentHTML前,要手工删除被替换元素的所有事件处理程序和js对象属性,不然会导致内存占用问题。当插入大量新HTML标记,使用这三个方法比多次使用DOM操作先创建节点再指定关系相比,效率要高得多。使用时,先单独构建字符串,最后再一次性把结果字符串赋给innerHTML


【关系】

每个节点都有一个childNodes属性,其中保留着一个NodeList对象(类数组,保存一组有序的节点,它基于DOM结构动 态变化,可用方括号或item()访问其中的节点) x.children 元素只包含元素子节点 x.childNodes可能还包含空白符

每个节点都有一个parentNode属性,指向文档树的父节点。包含在childNodes列表中的所有节点有相同的父节点。

X.parentNode

包含在childNodes列表中的每个节点,相互间为同胞节点

X.previousSibling (第一个节点的previousSibling为null) X.nextSibling (最后一个节点的nextSibling为null)

其他关系

X.firstChild X.lastChild X.ownerDocument 指向表示整个文档的文档节点

【方法】

• 判断是否有子节点 x.hasChildNodes() //返回true/false • 在childNodes列表最后增加新节点 x.appendChild(新节点) //返回新节点 • 在childNodes列表中,在参照节点前,插入新节点 x.insertBefore(新节点,参照节点) //返回新节点 • 在childNodes列表中替换节点 x.replaceChild(新节点,被替换节点) //返回被替换的节点 • 移除childNodes列表中的节点 x.removeChild(被移除的节点) //返回被移除的节点 • 复制节点副本 ○ 深复制(复制节点&其子节点树) x.cloneNode(true) ○ 浅复制(只复制节点本身) x.cloneNode(false) ?深复制和浅复制区别: 深复制:(递归)结果副本与原本指向两个不同的内存地址 浅复制:结果副本与原本指向同一个内存地址 • 处理文档树中的文本节点(删除不包含文本的文本节点、合并相邻的文本节点) X.normalize() • 滚动元素的容器时,元素出现在视口中 X.scrollIntoView() • 滚动元素容器,元素出现。当alignCenter为true时,元素显示在视口中部 X.scrollIntoViewIfNeeded(alignCenter) • 将元素内容滚动指定的行高 X.scrollByLines(行高) • 将元素内容滚动指定的页面高度 X.scrollByPages(页面高度) • 确定节点xx是否为节点x的后代 x.contains(xx) 返回true/false • 确定节点间的关系,返回表示关系的位掩码 x.compareDocumentPosition(xx) 1:无关 2:xx居前 4:xx局后 8:xx包含x 16:xx被x包含
转载请注明原文地址: https://www.6miu.com/read-1149988.html

最新回复(0)