2011-08-17 108 views
1

例如,我有这个数组对象:Object [object HTMLDivElement],[object HTMLDivElement],[object HTMLDivElement],[object HTMLDivElement],我需要将其更改为getElementsByTagName方法返回的一种值,但不要将节点移出节点树到我的新节点列表中,这是一个活动NodeList。数组ale中的我的html元素已经存在并指向页面中的真实元素,因此例如添加事件会反映在页面中。如何将live dom元素的数组转换为活的NodeList?

回答

2

您误解了NodeList中上下文中“活”的意思。

Live NodeLists是可变长度。它们可能包含一分钟3个节点和下一个17个节点。在访问和遍历NodeList时,将重新评估子/父/兄弟关系,以确定NodeList应包含哪些节点。

您无法将任意一组元素转换为“活动”NodeList。这只是一组随意的元素。从Mozilla的文档

节选getElementsByTagName

返回给定标记名称的元素的NodeList。搜索完整的文档,包括根节点。返回的NodeList是活动的,这意味着它自动更新自身以保持与DOM树同步,而无需再次调用document.getElementsByTagName。

1

对于支持getElementsByClassName方法的浏览器,你可以指定元素的类名的其它不相关的组,并收集他们与document.getElementsByClassName(分组级)的节点列表。

它会跟踪添加的新元素(具有相同的类名)以及从文档中删除的元素。

相关问题