亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

一直捋不順方法里對X的賦值,為什么要兩次賦值呢?在IE中不會變成下兩個節點么?

?function get_nextSibling(n){

? ? ? ? var x=n.nextSibling;

? ? ? ? while (x && x.nodeType!=1){

? ? ? ? ? ? x=x.nextSibling;

? ? ? ? }

? ? ? ? return x;

? ? }


正在回答

5 回答

?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)

? ? }


0 回復 有任何疑惑可以回復我~
#1

慕蓋茨2022422 提問者

非常感謝!
2016-09-12 回復 有任何疑惑可以回復我~

首先,我們是需要確定x為n這個參數的下一個兄弟元素,并且要求它為元素節點,這樣可以避免因為瀏覽器問題導致的空白文本節點,因此,用了while循環,x && x.nodeType!=1,是判斷x是否存在,并且type是不是“不是1”

如果是“不是1”,則執行下面語句,x=x.nextSibling;,目的是跳過“不是1”的空白文本節點


如果是“是1”,則確定它為元素節點,不需要跳過,返回值為最初賦值的var x=n.nextSibling;,因為經過了while的判斷,此時的x.nodeType肯定是1,因而肯定是元素節點

0 回復 有任何疑惑可以回復我~

我想我們是被判斷節點nodeType是否為1, 如是為元素節點,跳過這句話搞錯了,我個人認為這句話是錯的,因為我們的n是一個元素節點,所以它的下一個兄弟節點肯定也是一個元素節點,而元素節點的類型是1,while(x&&x.nodeType!=1){x=x.nextSibling;}這句話是當x的nextSibling不是元素節點的話,他就繼續往下遍歷,直至到最后一個兄弟節點。

0 回復 有任何疑惑可以回復我~
#1

慕蓋茨2022422 提問者

對沒錯就是這個意思,就想知道為什么不是 while (x && x.nodeType==1){ x=x.nextSibling;}
2016-09-06 回復 有任何疑惑可以回復我~
#2

qq_Mark單_0

回復 革命遙遙無期我覺得就是被注意的那句話誤導了,只要不是元素節點他就是會一直往后面檢測即nextSibling,你現在看了http://www.xianlaiwan.cn/video/2140這頁的知識了嗎,我一直搞不清楚!
2016-09-09 回復 有任何疑惑可以回復我~
#3

Airly

為什么n是元素節點下一個子節點就一定是元素節點呢,下一個子節點也有可能是文本節點啊,因為你看明明后面緊接的是空白的換行符,而瀏覽器默認這個為文本節點。所以,那里判斷是否為元素節點的用途就是,如果不是元素節點就訪問下一個子節點,如果是的話就返回當前訪問到的節點。
2016-09-12 回復 有任何疑惑可以回復我~
#4

慕蓋茨2022422 提問者 回復 qq_Mark單_0

當X不等1的時候說明X值是一個文本(空隔)既然是個空格我們就該跳過它(讓X值為下一個兄弟節點),如果X=1則說明X所獲取到的值為元素就不需要繼續向下尋找了直接返回X
2016-09-12 回復 有任何疑惑可以回復我~
#5

Airly 回復 慕蓋茨2022422 提問者

是的,就是你理解的這個意思。
2016-09-12 回復 有任何疑惑可以回復我~
查看2條回復

謝謝,我還想再問一下既然X存在且不是元素那為什么還要讓它的值為下一個值呢?

0 回復 有任何疑惑可以回復我~

這不是第二次賦值,只是覆蓋了之前的變量的值。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

一直捋不順方法里對X的賦值,為什么要兩次賦值呢?在IE中不會變成下兩個節點么?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號