回顾概念
文档: document
元素: 页面中所有的标签, 元素---element, 标签----元素---对象
节点: 页面中所有的内容(标签,属性,文本(文字,换行,空格,回车))----Node
根元素:html标签
需求---用之前学习的知识点能否解决?获取div中所有的标签,设置每个标签的背景颜色
节点---任意一个标签中的元素获取都非常的方便
节点的属性
可以使用标签--元素.出来
可以使用属性节点.出来
文本节点.点出来
节点的类型
nodeType: 节点的类型: 1----标签, 2---属性, 3---文本
nodeName: 节点的名字: 标签节点---大写的标签名字, 属性节点---小写的属性名字, 文本节点----#text
nodeValue: 节点的值: 标签节点---null, 属性节点---属性值, 文本节点---文本内容
获取相关的节点
获取父级节点和父级元素
.parentNode
.parentElement
获取相关的节点属性
.parentNode.nodeType // 1 --------标签
.parentNode.nodeName // DIV-----大写的标签名字
.parentNode.nodeValue // null------标签
这是div中的第一个span标签
这是div中的第二个元素,第一个p标签
- 乔峰
- 鹿茸
- 段誉
- 卡卡西
- 雏田
var ulObj=my$("uu");
console.log(ulObj.parentNode);//div
console.log(ulObj.parentNode.parentNode);//body
console.log(ulObj.parentNode.parentNode.parentNode);//html
console.log(ulObj.parentNode.parentNode.parentNode.parentNode);//document
console.log(ulObj.parentNode.parentNode.parentNode.parentNode.parentNode);//null
// //ul标签的父级节点
// console.log(ulObj.parentNode);
// //ul标签的父级元素
// console.log(ulObj.parentElement);
//
// console.log(ulObj.parentNode.nodeType);//标签的---1
// console.log(ulObj.parentNode.nodeName);//标签---大写的标签名字
// console.log(ulObj.parentNode.nodeValue);//标签---null
获取子节点和子元素
.childNodes // 7个
.children //3个
这是div中的第一个span标签
这是div中的第二个元素,第一个p标签
- 乔峰
- 鹿茸
- 段誉
- 卡卡西
- 雏田
//div
var dvObj = document.getElementById("dv");
//子节点
console.log(dvObj.childNodes);//7个子节点
//子元素
console.log(dvObj.children); //3
获取里面的每个子节点
用for循环,长度是:.childNodes.length
这是div中的第一个span标签
这是div中的第二个元素,第一个p标签
- 乔峰
- 鹿茸
- 段誉
- 卡卡西
- 雏田
//div
var dvObj = document.getElementById("dv");
//获取里面的每个子节点
for (var i = 0; i < dvObj.childNodes.length; i++) {
var node = dvObj.childNodes[i];
//nodeType--->节点的类型:1---标签,2---属性,3---文本
//nodeName--->节点的名字:大写的标签--标签,小写的属性名---属性,#text---文本
//nodeValue-->节点的值:标签---null,属性--属性的值,文本--文本内容
console.log(node.nodeType + "=====" + node.nodeName + "====" + node.nodeValue);
}
认识下即可:获取属性的节点
.getAttributeNode("id")
//2====id====dv
这是div中的第一个span标签
这是div中的第二个元素,第一个p标签
- 乔峰
- 鹿茸
- 段誉
- 卡卡西
- 雏田
//div
var dvObj = document.getElementById("dv");
//获取的是属性的节点
var node = dvObj.getAttributeNode("id");
console.log(node.nodeType + "====" + node.nodeName + "====" + node.nodeValue);//2====id====dv
12行代码:都是获取节点和元素的
前4个没有兼容问题
后面8个有
这是div中的第一个span标签
这是div中的第二个元素,第一个p标签
- 乔峰
- 鹿茸
- 段誉
- 卡卡西
- 雏田
//12行代码:都是获取节点和元素的
//ul
var ulObj=document.getElementById("uu");
//父级节点
console.log(ulObj.parentNode);
//父级元素
console.log(ulObj.parentElement);
//子节点
console.log(ulObj.childNodes);
//子元素
console.log(ulObj.children); //我是分割线//
//第一个子节点
console.log(ulObj.firstChild);//------------------------IE8中是第一个子元素
//第一个子元素
console.log(ulObj.firstElementChild);//-----------------IE8中不支持
//最后一个子节点
console.log(ulObj.lastChild);//------------------------IE8中是第一个子元素
//最后一个子元素
console.log(ulObj.lastElementChild);//-----------------IE8中不支持
//某个元素的前一个兄弟节点
console.log(my$("three").previousSibling);
//某个元素的前一个兄弟元素
console.log(my$("three").previousElementSibling);
//某个元素的后一个兄弟节点
console.log(my$("three").nextSibling);
//某个元素的后一个兄弟元素
console.log(my$("three").nextElementSibling);
总结获取节点:
凡是获取节点的代码在谷歌和火狐得到的都是相关的节点
凡是获取元素的代码在谷歌和火狐得到的都是相关的元素
从子节点和兄弟节点开始, 凡是获取节点的代码在IE8中得到的是元素;而获取元素的相关代码, 在IE8中得到的是undefined,iE中不支持