自己理解的时候总觉得是输出空白文本节点,老师求帮助啊
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<ul>
<li id="a">javascript</li>
<li id="b">jquery</li>
<li id="c">html</li>
</ul>
<ul>
<li id="d">CSS3</li>
<li id="e">PHP</li>
<li id="f">java</li>
</ul>
<script>
function get_nextSibling(n){//假设现在已经调用函数,传入参数a
var x=n.nextSibling;//x为a的下一个节点,即空白文本节点
while ( x&&x.nodeType!=1){//判断条件x非空(x)且(&&)x的节点不是元素节点(x.nodeType!=1)。x是空白节点,非空条件不符,假;x是空白文本节点,不是元素节点条件符合,真。一假一真逻辑与为假,所以x为空白节点是不参加循环,返回空白节点。那这样就不对了?!!!
x=x.nextSibling;
}
return x;
}
var a=document.getElementById("a");
//a为id='a'的元素节点
document.write(a.nodeName+" = "+a.innerHTML+a.nodeValue);
var b=get_nextSibling(a);
if (b!=null) {
document.write("<br />nextSibling:"+b.nodeName+" = "+b.innerHTML);
}else{
document.write("<br />已经是最后一个节点");
}
</script>
</body>
</html>