children(HTMLCollection)
children返回的是一個元素的子元素觅玻,只包括元素節(jié)點(diǎn)想际,不包含文本節(jié)點(diǎn)、注釋節(jié)點(diǎn)
<script>
window.onload = function(){
var oUl = document.getElementsByTagName('ul')[0];
console.log(oUl.children.length) // 2
}
</script>
<body>
<ul> i am text node
<li></li> i am text node too
<li></li><!--this is note-->
</ul>
</body>
childNodes (Nodelist)
childNodes返回的是所有子節(jié)點(diǎn)的一個集合溪厘,包括元素節(jié)點(diǎn)胡本、文本節(jié)點(diǎn)、注釋節(jié)點(diǎn)(如果一段文本被一個注釋所分開畸悬,那么這里就有三個節(jié)點(diǎn):文本節(jié)點(diǎn)侧甫、注釋節(jié)點(diǎn)、文本節(jié)點(diǎn))
<script>
window.onload = function(){
var oUl = document.getElementsByTagName('ul')[0];
console.log(oUl.childNodes.length) // 2
}
</script>
<body>
<ul> i am text node
<li></li> i am text node too
<li></li><!--this is note-->
</ul>
</body>
補(bǔ)充
關(guān)于nodeType:
元素節(jié)點(diǎn):nodeType === 1
屬性節(jié)點(diǎn):nodeType === 2
文本節(jié)點(diǎn):nodeType === 3
注釋節(jié)點(diǎn):nodeType === 8
文檔節(jié)點(diǎn)(document):nodeType === 9
關(guān)于HTMLCollection和NodeList:
主要區(qū)別是蹋宦,NodeList可以包含各種類型的節(jié)點(diǎn)披粟,HTMLCollection只能包含 HTML 元素節(jié)點(diǎn)。
NodeList
NodeList的成員可以是任意類型的節(jié)點(diǎn)
NodeList可以是動態(tài)的(element.childNodes)也可以是靜態(tài)的(document.querySeletorAll())
所謂動態(tài)指的是這個集合是動態(tài)的,如果動態(tài)添加子元素,那么這個集合也會發(fā)生變化
NodeList有l(wèi)ength列疗,forEach方法岂昭,keys(),values()等背桐,是一個類數(shù)組
HTMLCollection
HTMLCollection是一個節(jié)點(diǎn)對象的集合,只能包含元素節(jié)點(diǎn)(element),不能包含其他類型的節(jié)點(diǎn)碰镜。它的返回值是一個類似數(shù)組的對象,但是與NodeList接口不同习瑰,HTMLCollection沒有forEach方法绪颖,只能使用for循環(huán)遍歷。
返回HTMLCollection實(shí)例的甜奄,主要是一些Document對象的集合屬性柠横,比如document.links、document.forms课兄、document.images等牍氛。
以及document.getElementsByTagName(),document.getElementsByClassName(),element.children()等
HTMLCollection實(shí)例都是動態(tài)集合,節(jié)點(diǎn)的變化會實(shí)時反映在集合中