3_1:节点导航 [ 父 子 兄 ]

一  节点概述

1)概念

// . 网页中所有内容都是节点
// . 文档节点 元素节点 属性节点 文本节点 注释节点
// . 节点用node表示 // . DOM树的所有节点都可以通过JS访问 // 4 所有元素节点都可以创建 修改 删除

2)节点属性

// 节点至少有以下三个属性
// 1 节点类型 [ nodeType ]
// 2 节点名称 [ nodeName ]
// 3 节点值   [nodeValue ]

元素节点 nodeType 为 1
属性节点 nodeType 为 2
文本节点 nodeType 为 3 [ 包含 文字、空格、换行等 ]

//我们实际开发中,主要操作的是 元素节点

二 节点层级导航 [ 父 子 兄 ]

 

1)父节点

node.parentNode
// 1  返回离自己最近的父级节点
// 2  指点的节点没有父节点则返回null

<div>
    <p></p>
</div>
var p = document.getElementsByTagName('p');
console.log(p);
console.log(p[0].parentNode);//获取到父节点

2)子节点

1 返回所有子节点 
  
parentNode.childNodes
  返回了子节点集合 [ 包含 元素节点 和 文本节点 ]
  想要使用元素节点 需要专门处理 [ 一般不提倡使用childNodes ]

2 返回第一个子节点
  parentNode.firstNode [ 包含文本节点 ]

3 返回最后一个子节点
  parentNode.lastNode [ 包含文本节点 ]

4 返回第一个元素节点 [
有兼容性问题,IE9 以上才支持 ]
  firstElementNode;
5 返回最后一个元素节点[ 有兼容性问题,IE9 以上才支持 ]
  lastElementNode;
上面五个有两个有兼容性问题 有三个包含文本节点

重点学习:parentNode.children
//非标准 [ 但是得到了各个浏览器的支持 放心使用 ]
//只返回元素节点 不返回其他节点
//是一个只读属性

ul.children[0] //返回第一个元素
ul.children[ul.children.length - 1] //获取最后一个元素

3)兄弟节点

上一个  previousSibling  下一个  nextsibling
返回的节点包含 文本节点 和 元素节点
没有找到返回 null

上一个元素节点 previousElementSibling
下一个元素节点 next
ElementSibling
//这两个有兼容问题 ie9才支持
原文地址:https://www.cnblogs.com/fuyunlin/p/14433376.html