課程
/前端開發(fā)
/JavaScript
/JavaScript進階篇
? ? ? ? while (x && x.nodeType!=1)
這里已經(jīng)判斷節(jié)點的上個兄弟節(jié)點存在了
那么為什么還要?if(y!=null)這句
y!=null是節(jié)點存在 還是 不為空節(jié)點 的意思
是不是首先判斷節(jié)點存在再判斷節(jié)點不是空節(jié)點我猜的
2017-03-22
源自:JavaScript進階篇 9-11
正在回答
上面x!=null是提供了一個方法,只是確保函數(shù)一定運行,后面判斷y!=null是判斷var x=document.getElementsByTagName("li")[0];有沒有前一個節(jié)點的,判斷的內(nèi)容不是同一個,我也是弄了兩天才弄明白的,首先你要分開看,不要揉在一起想,把每一段為什么要這樣寫的目的搞清楚了,你就對這個代碼有全新認識了。
第一段:
?function get_previousSibling(n){
? ? ? ? var x=n.previousSibling;
? ? ? ? while (x && x.nodeType!=1){
? ? ? ? ? ? x=x.previousSibling;
? ? ? ? }
? ? ? ? return x;
? ? }
第二段:
?var x=document.getElementsByTagName("li")[1];
? ? document.write(x.nodeName);
? ? document.write(" = ");
? ? document.write(x.innerHTML);
第三段:
?var y=get_previousSibling(x);
? ??
? ? if(y!=null){
? ? ? ? document.write("<br />previoussibling: ");
? ? ? ? document.write(y.nodeName);
? ? ? ? document.write(" = ");
? ? ? ? document.write(y.innerHTML);
? ? }else{
? ? ? document.write("<br>已經(jīng)是最后一個節(jié)點"); ? ? ?
把每段為什么這樣寫的目的弄清楚了就OK了
再碼一段 提問者
qq_北海道和風_0 回復 再碼一段 提問者
可以看成是x!=null,保證x一定存在,為了保證代碼嚴謹
其實你想多了,你仔細看看if ? ?else這個判斷語句,因為var y=get_previousSibling(x);是獲得?var x=document.getElementsByTagName("li")[1];的向上一個節(jié)點,所以設(shè)var x=document.getElementsByTagName("li")[0];已經(jīng)是第一個節(jié)點了,就不可能還有向上節(jié)點。就輸出else這個語句了,你沒有讀懂這個代碼的意思而已
舉報
本課程從如何插入JS代碼開始,帶您進入網(wǎng)頁動態(tài)交互世界
3 回答if(text!=null)是什么意思?
2 回答if(y!=null)
4 回答appendChild of null是什么意思?
3 回答請問一下(x > y ? x : y)是什么意思
4 回答var y=get_nextSibling(x);這句話什么意思?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2017-03-23
上面x!=null是提供了一個方法,只是確保函數(shù)一定運行,后面判斷y!=null是判斷var x=document.getElementsByTagName("li")[0];有沒有前一個節(jié)點的,判斷的內(nèi)容不是同一個,我也是弄了兩天才弄明白的,首先你要分開看,不要揉在一起想,把每一段為什么要這樣寫的目的搞清楚了,你就對這個代碼有全新認識了。
第一段:
?function get_previousSibling(n){
? ? ? ? var x=n.previousSibling;
? ? ? ? while (x && x.nodeType!=1){
? ? ? ? ? ? x=x.previousSibling;
? ? ? ? }
? ? ? ? return x;
? ? }
第二段:
?var x=document.getElementsByTagName("li")[1];
? ? document.write(x.nodeName);
? ? document.write(" = ");
? ? document.write(x.innerHTML);
第三段:
?var y=get_previousSibling(x);
? ??
? ? if(y!=null){
? ? ? ? document.write("<br />previoussibling: ");
? ? ? ? document.write(y.nodeName);
? ? ? ? document.write(" = ");
? ? ? ? document.write(y.innerHTML);
? ? }else{
? ? ? document.write("<br>已經(jīng)是最后一個節(jié)點"); ? ? ?
? ? }
把每段為什么這樣寫的目的弄清楚了就OK了
2017-03-23
可以看成是x!=null,保證x一定存在,為了保證代碼嚴謹
2017-03-23
其實你想多了,你仔細看看if ? ?else這個判斷語句,因為var y=get_previousSibling(x);是獲得?var x=document.getElementsByTagName("li")[1];的向上一個節(jié)點,所以設(shè)var x=document.getElementsByTagName("li")[0];已經(jīng)是第一個節(jié)點了,就不可能還有向上節(jié)點。就輸出else這個語句了,你沒有讀懂這個代碼的意思而已