講解哪里寫著:“判斷節(jié)點(diǎn)nodeType是否為1, 如是為元素節(jié)點(diǎn),跳過。”這點(diǎn)是不是不對???
講解哪里寫著:“判斷節(jié)點(diǎn)nodeType是否為1, 如是為元素節(jié)點(diǎn),跳過?!边@點(diǎn)是不是不對???
? ? function get_nextSibling(n){
? ? ? ? var x=n.nextSibling;
? ? ? ? while (x && x.nodeType!=1){
? ? ? ? ? ? x=x.nextSibling;
? ? ? ? }
? ? ? ? return x;
1為元素節(jié)點(diǎn),上面這段代碼解讀應(yīng)該是:x存在,且x不等于元素節(jié)點(diǎn)的時候x等于下一個節(jié)點(diǎn)在進(jìn)行判斷,否則直接返回x。也就是說x為元素節(jié)點(diǎn)的時候則返回想x,而不是“跳過”。如果我的理解是對的,那講解那里就有誤導(dǎo)嫌疑了。
2018-06-22
這個答案原理是對的,利用邏輯操作符來進(jìn)行判定。但是需要注意一點(diǎn), x=document.getElementsByTagName("li"),得到的結(jié)果是一個關(guān)于 ? "li"元素的數(shù)組。 這個數(shù)組里面并不包含 空白節(jié)點(diǎn)。也不會出現(xiàn) 空白節(jié)點(diǎn)nodeType 為3。
當(dāng)x=document.getElementsByTagName("li")[5]的時候,指示的節(jié)點(diǎn)是<li id="f">java</li> 里面的li元素。此時,把x帶入get_nextSibling(n)函數(shù),進(jìn)行 x=x.nextSibling;運(yùn)算,此時變量x會返回一個 null 值。便無法進(jìn)行下面幾部的操作。
因此,利用邏輯操作符&&排除掉 x=null 的情況。