如何区分实时和非实时NodeList集合?

时间:2010-07-26 21:22:59

标签: javascript dom collections nodelist

document.getElementsByTagName('div')和document.querySelectorAll('div')都返回NodeList集合。唯一的区别是第一种方法返回实时收集,第二种方法返回静态收集。

问题是 - 是否有机会仅通过检查这些对象来区分一个对象(即 - 不试图添加/删除一些项目来测试“活跃度”)?

提前致谢

2 个答案:

答案 0 :(得分:6)

NodeList界面不知道其死亡或现场状态。

interface NodeList {
  Node item(in unsigned long index);
  readonly attribute unsigned long length;
};

它只包含一个属性length和一个方法item所以我担心目前无法在不操纵DOM并查看效果的情况下确定对象是否存在。

答案 1 :(得分:6)

a=document.querySelectorAll('a');
b=document.getElementsByTagName('a');

a.toString() == "[object NodeList]"
b.toString() == "[object HTMLCollection]"

(在FF / Chrome中)