講解哪里寫著:“判斷節(jié)點nodeType是否為1, 如是為元素節(jié)點,跳過。”這點是不是不對?。?/h1>
講解哪里寫著:“判斷節(jié)點nodeType是否為1, 如是為元素節(jié)點,跳過?!边@點是不是不對???
? ? function get_nextSibling(n){
? ? ? ? var x=n.nextSibling;
? ? ? ? while (x && x.nodeType!=1){
? ? ? ? ? ? x=x.nextSibling;
? ? ? ? }
? ? ? ? return x;
1為元素節(jié)點,上面這段代碼解讀應該是:x存在,且x不等于元素節(jié)點的時候x等于下一個節(jié)點在進行判斷,否則直接返回x。也就是說x為元素節(jié)點的時候則返回想x,而不是“跳過”。如果我的理解是對的,那講解那里就有誤導嫌疑了。
講解哪里寫著:“判斷節(jié)點nodeType是否為1, 如是為元素節(jié)點,跳過?!边@點是不是不對???
? ? function get_nextSibling(n){
? ? ? ? var x=n.nextSibling;
? ? ? ? while (x && x.nodeType!=1){
? ? ? ? ? ? x=x.nextSibling;
? ? ? ? }
? ? ? ? return x;
1為元素節(jié)點,上面這段代碼解讀應該是:x存在,且x不等于元素節(jié)點的時候x等于下一個節(jié)點在進行判斷,否則直接返回x。也就是說x為元素節(jié)點的時候則返回想x,而不是“跳過”。如果我的理解是對的,那講解那里就有誤導嫌疑了。
2018-06-22
這個答案原理是對的,利用邏輯操作符來進行判定。但是需要注意一點, x=document.getElementsByTagName("li"),得到的結(jié)果是一個關(guān)于 ? "li"元素的數(shù)組。 這個數(shù)組里面并不包含 空白節(jié)點。也不會出現(xiàn) 空白節(jié)點nodeType 為3。
當x=document.getElementsByTagName("li")[5]的時候,指示的節(jié)點是<li id="f">java</li> 里面的li元素。此時,把x帶入get_nextSibling(n)函數(shù),進行 x=x.nextSibling;運算,此時變量x會返回一個 null 值。便無法進行下面幾部的操作。
因此,利用邏輯操作符&&排除掉 x=null 的情況。
2018-05-20
&&為邏輯操作符,!=為比較操作符,比較操作符等級高于邏輯操作符,所以先進行x.nodeType!=1,判斷此事件是否為真,然后判斷x是否存在,如果存在也為真,最后當兩個事件同時為真時,則進行while循環(huán),即進行?x=x.nextSibling此語句操作,如果其中一個事件為假,那直接跳出循環(huán),返回。
針對此判斷有兩種情況:
1)當x為元素節(jié)點時,nodeType為1,等于1,所以x.nodeType!=1此事件為假,兩事件中其中一個為假,&&判斷后為假,則跳出while循環(huán),返回數(shù)值。
? 2)當x為空白節(jié)點時,nodeType為3,不等于1,所以x.nodeType!=1此事件為真,而x為空白節(jié)點,也為真,則&&判斷后為真,進行while循環(huán),執(zhí)行x=x.nextSibling語句,然后再次判斷,
? ? ? ?如果x為元素節(jié)點,循環(huán)1)。
? ? ? 如果運行到最后一個空白節(jié)點后,沒有下一個同級節(jié)點,則x.nextSibling返回null,此時x不存在,事件為假,進而?&&判斷為假,則跳出循環(huán),返回null值。? ? ? ? ? ? ? ? ? ?
2018-03-21
跳過指的是? x=x.nextSibling;不在查找下一個了
2018-03-21
確實感覺挺誤導的,但翻了下其他答案,發(fā)現(xiàn)跳過也可以理解為,當x是元素節(jié)點時,跳過while循環(huán)體,直接輸出x。
2018-01-24
應該是吧“!”這個去了嗎
2017-11-03
是這樣子的,講解不對。我也迷糊了好一會
2017-11-01
li的節(jié)點類型是1,他這里判斷的應該是節(jié)點是li才執(zhí)行