一直捋不順方法里對X的賦值,為什么要兩次賦值呢?在IE中不會變成下兩個節點么?
?function get_nextSibling(n){
? ? ? ? var x=n.nextSibling;
? ? ? ? while (x && x.nodeType!=1){
? ? ? ? ? ? x=x.nextSibling;
? ? ? ? }
? ? ? ? return x;
? ? }
?function get_nextSibling(n){
? ? ? ? var x=n.nextSibling;
? ? ? ? while (x && x.nodeType!=1){
? ? ? ? ? ? x=x.nextSibling;
? ? ? ? }
? ? ? ? return x;
? ? }
2016-09-02
舉報
2016-09-12
?function get_nextSibling(n){
? ? ? ??var x=n.nextSibling; ------------> 這里是檢測又沒有下一個兄弟節點,無則賦null值
【說明下:1.這個x有可能返回的是空格符即為文本節點,nodeTpye=3;2.這個x有可能是返回null】
? ? ? ? while (x && x.nodeType!=1){ ----------> 當有下一個兄弟節點但他的兄弟節點不是元素節點
? ? ? ??? ? x=x.nextSibling; ?-------->則繼續讀一下個子節點,并賦值給x
? ? ? ? }
? ? ? ? return x;----------->返回第一次調用函數的值(可能是文本節點,nodeType=3,也可能是null)
? ? }
2016-09-28
首先,我們是需要確定x為n這個參數的下一個兄弟元素,并且要求它為元素節點,這樣可以避免因為瀏覽器問題導致的空白文本節點,因此,用了while循環,x && x.nodeType!=1,是判斷x是否存在,并且type是不是“不是1”
如果是“不是1”,則執行下面語句,x=x.nextSibling;,目的是跳過“不是1”的空白文本節點
如果是“是1”,則確定它為元素節點,不需要跳過,返回值為最初賦值的var x=n.nextSibling;,因為經過了while的判斷,此時的x.nodeType肯定是1,因而肯定是元素節點
2016-09-06
我想我們是被判斷節點nodeType是否為1, 如是為元素節點,跳過這句話搞錯了,我個人認為這句話是錯的,因為我們的n是一個元素節點,所以它的下一個兄弟節點肯定也是一個元素節點,而元素節點的類型是1,while(x&&x.nodeType!=1){x=x.nextSibling;}這句話是當x的nextSibling不是元素節點的話,他就繼續往下遍歷,直至到最后一個兄弟節點。
2016-09-05
謝謝,我還想再問一下既然X存在且不是元素那為什么還要讓它的值為下一個值呢?
2016-09-02
這不是第二次賦值,只是覆蓋了之前的變量的值。