1.获取子节点
1.1 父节点.children
1.2 父节点.childNodes 标准属性
var oUl = document.getElementsByTagName("ul")[0];
//获取子节点
//1.1 父节点.children 非标准属性 一般用这个
var children = oUl.children;
console.log(children); //HTMLCollection(6)
//1.2 父节点.childNodes 标准属性
var childNodes = oUl.childNodes;
console.log(childNodes); //NodeList(13) 节点列表
console.log(childNodes.length);
2.节点的属性
2.1 节点.nodeType
2.2 节点.nodeName:节点名称
2.3 节点.nodeValue:节点内容
//1.4 节点的基本属性
//节点.nodeType : 返回当前节点的类型 1--标签节点 2--属性节点 3--文本节点 8--注释节点
console.log(childNodes[0].nodeType); //标签--1
console.log(childNodes[1].nodeType); //注释--8
console.log(childNodes[2].nodeType); //文本--3
//nodeName:节点名称
console.log(childNodes[0].nodeName); //LI
console.log(childNodes[1].nodeName);
console.log(childNodes[2].nodeName);
//nodeValue:节点内容
childNodes[2].nodeValue = "我是一个我那边节点”
3.获取父节点
3.1 获取直接父节点 子节点.parentNode
3.2 获取定位父节点 子节点.offsetParent ,如果没有定位父节点获取到body
var oLi = document.getElementsByTagName("li")[0];
//1.获取直接父节点 子节点.parentNode
console.log(oLi.parentNode);
//2.获取定位父节点 子节点.offsetParent ,如果没有定位父节点获取到body
console.log(oLi.offsetParent);
4.获取兄弟节点
4.1 获取首节点 父节点.firstChild 父节点.firstElementChild
var oUl = document.getElementsByTagName("ul")[0];
//1.获取首节点 父节点.firstChild ,ie可以正常获取到第一个标签,标准浏览器会获取到文本
var first = oUl.firstChild;
//父节点.firstElementChild : 解决标准浏览器获取到文本的问题, ie不兼容
var first = oUl.firstElementChild;
4.2 获取尾节点 父元素.lastChild 父元素.lastElementChild
var last = oUl.lastElementChild || oUl.lastChild
last.style.background = "yellow";
4.3 获取下一个兄弟 参考节点.nextSibling 参考节点.nextElementSibling
var list = document.getElementById("list");
var next = list.nextElementSibling || list.nextSibling;
next.style.background = "pink";
4.4 获取上一个兄弟 参考节点.previousSibling 参考节点.previousElementSibling;
var previous = list.previousElementSibling||list.previousSibling ;
previous.style.background = "blue";
5.创建节点 添加节点
1.创建节点: document.createElement
var li = document.createElement('标签名'); //创建标签节点
var text = document.createTextNode('文本内容');// 创建文本节点;
2. 在父元素末尾追加一个子节点 父节点.appendChild(子节点)
//父节点.appendChild(子节点)
// 注意:要添加的子节点必须是一个标签 ,如果添加的是一个已经存 在的标签,不会复制一份再添加,而是发生位置移动
var oLi = document.createElement("li");
oLi.innerHTML = "我是添加标签"
oUl.appendChild(oLi);
6. 在某个元素之前添加节点
6.1 父节点.insertBefore(newChild[新节点],refChild[参考节点])
var oUl = document.getElementsByTagName("ul")[0];
var oLi = document.getElementById("li");
//1、在某个元素之前添加
//1.在数字2之前添加一个a 父节点.insertBefore(newChild[新节点],refChild[参考节点])
var cLi = document.createElement("li");
cLi.innerHTML = "a";
oUl.insertBefore(cLi,oLi);
7. 删除节点
7.1 节点.remove() : 删除节点本身
7.2 父节点.removeChild(子节点)
//2.删除节点
var oDiv = document.getElementsByTagName("div")[0];
var oP = document.getElementsByTagName("p");
//2.1 节点.remove() : 删除节点本身
//oP[2].remove();
//2.2 父节点.removeChild(子节点)
oDiv.removeChild(oP[2]);
8.替换节点
8.1 父节点.replaceChild(newChild,refChild)
var oL = document.createElement("p");
oL.innerHTML = "今天周五需要考试";
oDiv.replaceChild(oL,oP[1]);
9.复制节点
9.1 被复制的节点.cloneNode(boolean)
// 被复制的节点.cloneNode(boolean) 默认是false
// false:复制标签,没有内容
// true:复制标签和内容
var copyP = oP[1].cloneNode(true);
oDiv.appendChild(copyP);
10 查找节点
10.1 document.querySelect(css选择器) : 获取到当前选择器选中标签的第一个元素
10.2 document.querySelectAll(css选择器) : 获取到当前选择器选中的所有标签
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
</ul>
<ul id="list" class="list">
<li>a</li>
<li>b</li>
<li><span>c</span></li>
</ul>
console.log(document.querySelector("li")); // <li>1</li>
console.log(document.querySelectorAll("li")); // NodeList(6) [li, li, li, li, li, li]
//获取第二个ul里面的li
console.log(document.querySelectorAll("#list li")); //NodeList(3) [li, li, li]
console.log(document.querySelectorAll(".list li")); //NodeList(3) [li, li, li]