HTMLCollection对象 :::success HTMLCollection对象具有length属性,返回集合的长度,可以通过item ()函数和namedItem()函数来访问特定的元素。 ::: (1)item()函数HTMLCollection对象可以调用item()函数,通过序号来获取特定的某个节点,超过索引则返回“null”。
(2)namedItem()函数namedItem()函数用来返回一个节点。首先通过id属性去匹配,然后如果没有匹配到则使用name属性匹配,如果还没有匹配到则返回“null”。当出现重复的id或者name属性时,只返回匹配到的第一个值。NodeList对象
- NodeList对象也具有length属性,返回集合的长度,也同样具有item()函数,通过索引定位子元素的位置。由于和HTMLCollection对象的item()函数一致,这里就不赘述了。
- HTMLCollection对象和NodeList对象的实时性
- HTMLCollection对象和NodeList对象并不是历史文档状态的静态快照,而是具有实时性的。对DOM树新增或者删除一个相关节点,都会立刻反映在HTMLCollection对象与NodeList对象中。
- HTMLCollection对象与NodeList对象都只是类数组结构,并不能直接调用数组的函数。而通过call()函数和apply()函数处理为真正的数组后,它们就转变为一个真正的静态值了,不会再动态反映DOM的变化。
- HTMLCollection对象和NodeList对象具有以下的相同点和不同点。
- (1)相同点
- 都是类数组对象,有length属性,可以通过call()函数或apply()函数处理成真正的数组。
- 都有item()函数,通过索引定位元素。
- 都是实时性的,DOM树的变化会及时反映到HTMLCollection对象和NodeList对象上,只是在某些函数调用的返回结果上会存在差异。
- (2)不同点
- HTMLCollection对象比NodeList对象多个namedItem()函数,可以通过id或者name属性定位元素。
- HTMLCollection对象只包含元素的集合(Element),即具有标签名的元素;而NodeList对象是节点的集合,既包括元素,也包括节点,例如text文本节点。
- (1)相同点