封装返回元素兄弟元素节点的函数
封装函数,返回元素elem的第n个兄弟元素节点,n为正,返回后面的兄弟元素节点,n为负,则返回前面的,n为0,返回自己。
想要取得元素的兄弟元素节点,需要使用nextElementSibling
和previousElementSibling
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div>
<span></span>
<strong></strong>
<b></b>
<div></div>
<p></p>
</div>
<script>
function retSibling(elem, n){
if(n > 0){
while(elem && n){
elem = elem.nextElementSibling;
n --;
}
}else{
while(elem && n){
elem = elem.previousElementSibling;
n ++;
}
}
return elem;
}
</script>
</body>
</html>
函数如下:
function retSibling(elem, n){
if(n > 0){
while(elem && n){
elem = elem.nextElementSibling;
n --;
}
}else{
while(elem && n){
elem = elem.previousElementSibling;
n ++;
}
}
return elem;
}
或
function retSibling(elem, n){
while(elem && n){
if(n > 0){
elem = elem.nextElementSibling;
n --;
}else{
elem = elem.previousElementSibling;
n ++;
}
}
return elem;
}
若考虑兼容性
function retSibling(elem, n){
while(elem && n){
if(n > 0){
if(elem.nextElementSibling){
elem = elem.nextElementSibling;
}else{
for(elem = elem.nextSibling; elem && elem.nodeType != 1; elem = elem.nextSibling);
}
n --;
}else{
if(elem.previousElementSibling){
elem = elem.previousElementSibling;
}else{
for(elem = elem.previousSibling; elem && elem.nodeType != 1; elem = elem.previousSibling);
}
n ++;
}
}
return elem;
}