一、节点的分类
a.nodeType==1 为元素节点b.nodeType==2 为属性节点c.nodeType==3 位文本节点
获取节点
<!-- nodeType 判断第一个节点的类型--> <p id="app" >123</p> <script> var app=document.getElementById("app"); var id=app.getAttributeNode("id") //获取属性节点 console.log(app.nodeType); //1 元素节点 console.log(app.firstChild.nodeType); //获取第一个子节点 3 文本节点 console.log(id.nodeType); //2 属性节点 </script>
二、节点的获取
childNodes 获取所有子节点 (不管文本还是属性节点)
parentNode 父元素节点
<ul id="app"> <li>hello world</li> <li>hello world</li> <li>hello world</li> <li>hello world</li></ul> <script> var app = document.getElementById("app") var childs = app.childNodes; console.log(childs); // 所有的子节点 共有9个 var arr = [] for(var i = 0;i<childs.length;i++){ if(childs[i].nodeType == 1){ arr.push(childs[i]) } } console.log(arr); </script>
children 只获取元素节点
<ul id="app"> <li>hello world</li> <li>hello world</li> <li>hello world</li> <li>hello world</li></ul> <script> var app = document.getElementById("app") console.log(app.children) // 只获取元素节点 </script>
三、节点
2-1 子节点
- FirstChild //包含所有类型的节点 获取第一个子节点
- FirstElementChild //IE9以下不兼容 获取第一个元素子节点
- LastChild //所有类型的节点 获取第一个子节点
- LastElementChild //IE9以下不支持 兼容问题的解决 获取第一个元素子节点
//firstElementChild在ie9以上是一个对象,IE9以下undefined
2-2 兄弟节点
- nextSibling 返回指定节点之后紧跟的节点,在相同的树层级中。
- nextElementSibling //IE9以下不支持 返回指定元素之后的下一个兄弟元素(相同节点树层中的下一个元素节点)
- previousSibling 返回列表项的 previousSibling(前一个同胞节点)
- previousElementSibling //IE9以下不支持 属性返回指定元素的前一个兄弟元素(相同节点树层中的前一个元素节点)