JS之DOM 通过关系找标签

1、通过关系(父子关系、兄弟关系)找标签。
parentNode 获取当前元素的父节点。
childNodes 获取当前元素的所有下一级子元素。
firstChild 获取当前节点的第一个子节点。
lastChild 获取当前节点的最后一个子节点。
------------------------------------------------------------
nextSibling 获取当前节点的下一个节点。(兄节点)
previousSibling 获取当前节点的上一个节点。(弟节点)

我们可以通过标签的类型进行判断筛选:

文本节点的类型: 3
注释的节点类型: 8
标签节点的类型: 1

 

方法

1、查看父节点。
var parentNode = bodyNode.parentNode;
alert("父节点的名称:"+parentNode.nodeName);

2、找子节点:childNodes 获取所有的子节点,返回的是一个数组。

  注意: 获取子节点的时候是包括了空文本或者是注释。

var children = bodyNode.childNodes;
for(var i = 0 ; i<children.length ; i++){
//if(children[i].nodeType==1){
alert("节点的名字:"+children[i].nodeName+" 对象的类型:"+children[i].nodeType);
//}
}

alert("第一个子节点:"+bodyNode.firstChild.nodeName);
alert("最后一个子节点:"+bodyNode.lastChild.nodeName);

3、找兄弟节点

var inputNode = document.getElementById("userName");
alert("下个兄弟节点:"+inputNode.nextSibling.nodeName); //下一个兄弟节点。
alert("上一个兄弟节点:"+inputNode.previousSibling.nodeName);

代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body><input type="text" id="userName"/><img src="user.png" /> 
</body>
<script type="text/javascript">
    
    var bodyNode = document.getElementsByTagName("body")[0];
    /*
    查看父节点。
    var parentNode = bodyNode.parentNode;
    alert("父节点的名称:"+parentNode.nodeName);
    
    
    //找子节点:childNodes 获取所有的子节点,返回的是一个数 组。 注意: 获取子节点的时 候是包括了空文本或者是注释。
    var children = bodyNode.childNodes; 
    for(var i = 0 ; i<children.length ; i++){
        //if(children[i].nodeType==1){
            alert("节点的名字:"+children[i].nodeName+" 对象的类型:"+children[i].nodeType);    
        //}
    }
    
    
    alert("第一个子节点:"+bodyNode.firstChild.nodeName); 
    alert("最后一个子节点:"+bodyNode.lastChild.nodeName); 
    
    
    //找兄弟节点
*/    
    var inputNode = document.getElementById("userName");
    alert("下个兄弟节点:"+inputNode.nextSibling.nodeName); //下一个兄弟节点。
    alert("上一个兄弟节点:"+inputNode.previousSibling.nodeName); 
    
</script>

</html>

 

posted @ 2017-02-27 11:31  mslog  阅读(412)  评论(0编辑  收藏  举报