DOM--(Node)

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包含
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值