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