為什么while中的判斷條件是(x&&x.nodeType!=1),為什么要有x&&?
最下面是我的代碼,在get_nextSibling(n)函數(shù)中使用條件
while?(x.nodeType!=1)
結(jié)果可以運(yùn)行;
可在get_previousSibling函數(shù)中使用這個(gè)條件就無法輸出else的判斷了!
簡(jiǎn)單說: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非空吧