JavaScript之childNodes 和 children 區別

lvxiangan發表於2018-07-24

 1、先讓我們來看看childNodes的用法,以及是如何計算節點數量:

 

為什麼輸出是7而不是3呢?原來Internet Explorer 會忽略節點之間生成的空白文字節點(比如換行字元),而 Mozilla 不這麼做。

 

2、兩者區別:

children() 方法返回被選元素的所有直接子元素。因此上面直接輸出3。

注意:children()在IE中包含註釋節點。

 

總結:

1、不建議使用childNodes方法。

硬要使用這個方法,可以通過nodeType來判斷是哪種型別的節點,只有當nodeType==1時才是元素節點,2是屬性節點,3是文字節點。因此我們可以通過這樣判斷:

if (nodes.childNodes[i].nodeType == 1) {
    // nodes.childNodes[i] 是元素節點
}

2、使用children方法時,不要使用註釋。

3、推薦使用:

         var arr = nodes.getElementsByTagName("li");

           arr[ i ].xxx

 

相關文章