為什么while中的判斷條件是(x&&x.nodeType!=1),為什么要有x&&?
最下面是我的代碼,在get_nextSibling(n)函數(shù)中使用條件
while?(x.nodeType!=1)
結(jié)果可以運(yùn)行;
可在get_previousSibling函數(shù)中使用這個(gè)條件就無法輸出else的判斷了!
簡單說:x!=1 ?這句話到底是什么意思?
<!DOCTYPE?HTML>
<html>
<head>
<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8">
<title>nextSibling</title>
</head>
<body>
<ul?id="u1">???
????<li?id="a">javascript</li>???
????<li?id="b">jquery</li>???
????<li?id="c">html</li>???
</ul>???
<ul?id="u2">???
????<li?id="d">css3</li>???
????<li?id="e">php</li>???
????<li?id="f">java</li>???
</ul>
<script?type="text/javascript">
//編寫get_nextSibling?函數(shù),獲得指定節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)。
????function?get_nextSibling(n){
????????var?x=n.nextSibling;
????????while?(x.nodeType!=1){
????????????x=x.nextSibling;
????????}
????????return?x;
????}
//編寫get_previousSibling?函數(shù),獲得指定節(jié)點(diǎn)的上一個(gè)節(jié)點(diǎn)。
????function?get_previousSibling(n){
??????var?x=n.previousSibling;
??????while(x&&x.nodeType!=1){
????????x=x.previousSibling;
??????}
??????return?x;
????}
????var?n=document.getElementsByTagName("li")[0];
????document.write("<br>"+n.nodeName+"?=?"+n.innerHTML);
????var?y=get_nextSibling(n);
????if(y!=null){
????????document.write("<br?/>nextsibling:?"+y.nodeName+"?=?"+y.innerHTML);
????}else{
??????document.write("<br>已經(jīng)是最后一個(gè)節(jié)點(diǎn)");??????
????}
????var?m=document.getElementsByTagName("li")[0];
????document.write("<br><br>"+m.nodeName+"?=?"+m.innerHTML);
???var?z=get_previousSibling(m);
????if(z!==null){
??????document.write("<br>previousSibling:"+z.nodeName+"?=?"+z.innerHTML);
????}
????else{
??????document.write("<br>這已經(jīng)是最上面一個(gè)節(jié)點(diǎn)");
????}
</script>
</body>
</html>
2016-10-27
while(x && x.nodeType!=1)
這條代碼并不是你理解的x!=1 && x.nodeType!=1
而是( x) &&(?x.nodeType!=1)
與上x我想大概是判斷x非空吧