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