在节点操作中,可以利用几点层次关系获取元素(父子兄节点关系)。
一般的,节点至少拥有nodeType(节点类型)、nodeName(节点名称)和nodeValue(节点值)三个基本属性。其中元素节点的nodeType为1;属性节点的nodeType为2;文本节点是nodeType为3.
1.父级节点(node.parentNode):得到的是离父级最近父级节点,如果找不到父节点,则返回null。
2.子节点(parentNode.childNodes):返回包含指定节点的子节点的集合(会包含元素节点,文本节点等等),注意是集合。可利用for循环找出节点为1的元素节点。
或
子节点(parentNode.children):注意!!!它只返回所有子元素节点(只是元素)。
parentNode.firstChild(获取第一个子节点,不管是元素还是文本还是属性)
parentNode.lastChild(获取最后一个子节点,不管是元素还是文本还是属性)
3.兄弟节点
node.nextSibling;(找不到返回null,包含元素节点,文本节点等等)
node.previousSibling;(找不到返回null,包含元素节点,文本节点等等)
以下两个获取兄弟元素节点(有兼容性)
node.nextElementSibling;
node.previousElementSibling;
//解决兼容性问题
function getNextElementSibling(element){
while(element=element.nextSibling){
if(element.nodeType === 1){
return element;
}
}
return null;
}