關于while不明白的同學可以看看!
看好多同學有疑問。解析下這個代碼:
while (x && x.nodeType!=1){
? ? ? ? ? ? x=x.nextSibling;
? ? ? ? }
? ? ? ? return x;
? ? }
首先,這個判定是在函數內部。函數的參數是n,n的值是在定義y的時候傳給它的。即n=document.getElementsByTagName("li")[0]也就是所有li元素的第一個li。 傳進來之后呢? 通過函數進行處理之后賦值給y。 函數怎么處理的呢?首先n被傳入,函數內部定義x=n.nextSibling。這里就是第一個li元素后面的元素賦值給x。然后開始判斷x是否等于1。不等于1呢?x=x.nextSibling; 不等于1就意味著后面的換行符被當作空白的節點那么這個節點后面的節點就是我們想要的。所以x=x.nextSibling,就是自身后面的節點賦值給自己。此時x就是這個空節點后面的兄弟節點。也就是第二個li元素。 如果等于1呢?x=n.nextSibling n是被傳入第一個li元素節點了,那么n.nextSibling就是第一個li后面的兄弟元素(第二個li元素),并賦值給自己,此刻x等于它自身后面的兄弟元素。
2015-09-26
此中的1表示什么意思???是表示判斷是否為空的意思嗎?
2015-09-24
如果連續兩個空白節點呢?那這個while就沒有效果了。有什么更好的判斷方法么?