二、DOM 之 节点和描述节点之间关系的属性 ------ 2020-08-23

1、节点的定义:

节点:Node(页面中所有的东西都是节点)
节点集合:NodeList

2、节点的分类:

(1)元素节点(元素标签)
(2)文本节点
(3)注释节点
(4)文档节点(document)
......

3、节点的属性:

(1)元素节点

nodeType:1
nodeName:大写的标签名
nodeValue:null

(2)文本节点

nodeType:3
nodeName:'#text'
nodeValue:文本内容

(3)注释节点

nodeType:8
nodeName:'#comment'
nodeValue:注释内容

(4)文档节点

nodeType:9
nodeName:'#document'
nodeValue:null

4、描述这些节点之间关系的属性:

(1)childNodes:获取所有的子节点
(2)children:获取所有的元素子节点(子元素标签集合)
(3)firstChild:获取第一个子节点
(4)lastChild:获取最后一个子节点
(5)firstElementChild:获取第一个元素子节点(不兼容IE6-8)
(6)lastElementChild:获取最后一个元素子节点(不兼容IE6-8)
(7)previousSibling:获取上一个哥哥节点
(8)nextSibling:获取下一个弟弟节点
(9)previousElementSibling:获取上一个哥哥元素节点(不兼容IE6-8)
(10)nextElementSibling:获取下一个弟弟元素节点(不兼容IE6-8)

5、标准浏览器和IE6-8下的几个兼容性问题

(1)标准浏览器(非IE6-8)会把空格和换行当做文本节点处理
childNodes中包含所有的节点
(2)IE6-8下使用 children 会把注释也当做元素节点

6、封装一些兼容性方法

function children (context) {
    var res = [],
         nodeList = context.childNode;
    for (var i = 0; i < nodeList.length; i++) {
        var item = nodeList[i};
        item.nodeType === 1 ? res.push(item) : null; 
    }
    return res
}

function perv (context) {
    var prev = context.previousSibling
    while (prev.nodeType !== 1) {
         prev = prev.previousSibling
    }
    return prev
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容