2011-08-17 106 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(分組級)的節點列表。

它會跟蹤添加的新元素(具有相同的類名)以及從文檔中刪除的元素。

相關問題