1.获取子节点

1.获取所有子节点(包含字符,空格和回车节点元素)-childNodes

var allNodesArr=document.getElementById("test").childNodes

使用childNodes获取子节点,返回的是一个子节点集合。是一个数组的格式,并且它会把空格和换行都当做节点数据放在集合内

因此,由于一般我们获取子节点时是不需要这些空格和换行信息的,所以我们需要手动过滤那些不必要的数据。

var allNodesArr=document.getElementById("test").childNodes;
    for(var i=0;i<allNodesArr.length;i++){
        if(allNodesArr[i].nodeName=="#text"&&(/\t/.test(allNodesArr[i].nodeValue)||/\n/.test(allNodesArr[i].nodeValue))){
            document.getElementById("test").removeChild(allNodesArr[i]);
    }
}
//输出打印过滤后的结果
for(var i=0;i<allNodesArr.length;i++){
    console.log(allNodesArr[i])
}

2.获取子节点(不包含字符,空格和回车节点元素)-children

var allNodesArr=document.getElementById("test").children;

利用children可以迅速获取到不包含空格,回车的html节点元素,并且返回结果也是数组格式

3.获取第一个子节点(包含字符,空格和回车)-firstchild

var first=document.getElementById("test").firstchild;

firstChild可以取到元素的第一个子节点,但是和childNodes一样,会将空格,回车当做节点元素返回。

4.获取第一个子节点(不包含字符,空格和回车)firstElementChild

var firstEleChild=document.getElementById("test").firstElementChild;

firstElementChild会直接取到第一个子节点,并且不会将空格,回车纳入子节点的范畴中

5.获取最后一个子节点

lastChild和lastElementChild参考firstChild和firstElementChild

var lastChild=document.getElementById("test").lastChild;
var lastEleChild=document.getElementById("test").lastElementChild;

 

2.获取父节点

1.获取父节点parentNode(w3c)

var parentNode=document.getElementById("test").parentNode;

获取的是当前元素的直接父元素。parentNode是w3c的标准

2.获取父节点parentElement (IE)

var parentNode=document.getElementById("test").parentElement;

获取的是当前元素的直接父元素。parentElement是ie的标准,仅IE下有效,其他浏览器不支持

3.获取所有父节点offsetParent

var bodyBelowNode=document.getElementById("test").offsetParent;

这个是于位置有关的上下级 ,直接能够获取到所有父亲节点, 这个对应的值是body下的所有节点信息。

 

3.获取兄弟节点

1. 通过获取父节点再通过遍历子节点得到兄弟节点

var priviousSiblingNode=parentNode.children[0];

2.获取上一个兄弟节点(包含字符,空格和换行)previousSibling

var previousSibling=document.getElementById("test").previousSibling;

previousSibling会匹配字符,包括换行和空格

3.获取上一个兄弟节点(不包含字符,空格和换行)previousElementSibling

var previousEleSibling =document.getElementById("test").previousElementSibling;

previousElementSibling则直接匹配节点,不会匹配字符,包括换行和空格

4.获取下一个兄弟节点nextSibling、nextElementSibling

参考previousSibling、previousElementSibling

var nextSibling=document.getElementById("test").nextSibling;
var nextELementSibling=document.getElementById("test").nextElementSibling;