访问关系-封装代码
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>访问关系封装</title>
<style>
li{
width: 100px;
height: 100px;
background-color: pink;
margin: 5px;
list-style: none;
}
</style>
</head>
<body>
<ul>
<li></li>
<li></li>
<li id="box"></li>
<li></li>
<li></li>
</ul>
<script src="tools.js"></script>
<script>
//获取box改为red
var box = getEle("box");
box.style.backgroundColor="red";
//获取第一个和最后一个子节点
var parent = box.parentNode;
getFirstNode(parent).style.backgroundColor="yellow";
getLastNode(parent).style.backgroundColor="yellow";
//获取上一个下一个兄弟节点
getNextNode(box).style.backgroundColor="blue";
getPrevNode(box).style.backgroundColor="blue";
//指定兄弟节点
getEleOfIndex(box,0).style.backgroundColor="green";
getEleOfIndex(box,1).style.backgroundColor="green";
//获取所有的兄弟节点
var arr = getAllSiblings(box);
for(var i=0;i<arr.length;i++){
arr[i].style.backgroundColor = "black";
}
// //父节点
// div.parentNode;
//
// //兄弟节点
// div.previousSibling;
// div.previousElementSibling;
// div.nextSibling;
// div.nextElementSibling;
//
// //单个子节点
// div.firstChild;
// div.firstElementChild;
// div.lastChild;
// div.lastElementChild;
//
// //所有子节点
// div.childNodes;
// div.children;
//
// //获取指定的兄弟节点
// div.parentNode.children[index];
//
// //获取所有的兄弟节点
// function fn(ele) {
// var newArr = [];
// var arr = ele.parentNode.children;
// for (var i = 0; i < arr.length; i++) {
// //如果不是ele元素本身,添加到新数组,老数组里面包含的ele
// if (ele !== arr[i]) {
// newArr.push(arr[i]);
// }
// }
// }
</script>
</body>
</html>
tool.js
function getEle(id) {
return document.getElementById(id)
}
/**
* 功能:给指定元素查找它的第一个元素子节点,并返回
* @param ele
* @returns {Element | (() => Node) | ActiveX.IXMLDOMNode | Node | SVGElementInstance}
*/
function getFirstNode(ele) {
var node = ele.firstElementChild || ele.firstChild;
return node;
}
/**
* 功能:给指定元素查找它的最后一个元素子节点,并返回
* @param ele
* @returns {Element | ActiveX.IXMLDOMNode | Node | SVGElementInstance | (() => Node)}
*/
function getLastNode(ele) {
return ele.lastElementChild || ele.lastChild;
}
/**
* 功能:给定元素查找他的下一个元素兄弟节点,并返回
* @param ele
* @returns {Element | null | Node | SVGElementInstance | ActiveX.IXMLDOMNode | (() => Node)}
*/
function getNextNode(ele) {
return ele.nextElementSibling || ele.nextSibling;
}
/**
* 功能:给定元素查找他的上一个元素兄弟节点,并返回
* @param ele
* @returns {Element | null | Node | SVGElementInstance | ActiveX.IXMLDOMNode | (() => Node)}
*/
function getPrevNode(ele) {
return ele.previousElementSibling || ele.previousSibling;
}
/**
* 功能:给定元素和索引值查找指定索引值的兄弟节点,并返回
* @param ele
* @param index
* @returns {Element}
*/
function getEleOfIndex(ele,index) {
return ele.parentNode.children[index];
}
/**
* 功能:给定元素查找它的所用兄弟元素,并返回数组
* @param ele
*/
function getAllSiblings(ele) {
var newArr = [];
var arr = ele.parentNode.children;
for (var i = 0; i < arr.length; i++) {
//如果不是ele元素本身,添加到新数组,老数组里面包含的ele
if (ele !== arr[i]) {
newArr.push(arr[i]);
}
}
return newArr;
}