最近我遇到了一個事實,即元素的childNodes屬性返回一個NodeList而不是一個Array。現在我明白了一個NodeList是爲了實時收集元素,但我不明白爲什麼它會排除像indexOf這樣的方法,甚至是推送。爲什麼JavaScript NodeList是不可變的?
任何人都可以解釋爲什麼你可以用NodeList做唯一的事情就是索引它嗎?
最近我遇到了一個事實,即元素的childNodes屬性返回一個NodeList而不是一個Array。現在我明白了一個NodeList是爲了實時收集元素,但我不明白爲什麼它會排除像indexOf這樣的方法,甚至是推送。爲什麼JavaScript NodeList是不可變的?
任何人都可以解釋爲什麼你可以用NodeList做唯一的事情就是索引它嗎?
我的印象是這種情況,所以你必須使用正確的DOM機制來改變DOM結構。
看着它的兼容性問題,它可能是更安全反正使用DOM方法:
另外,它確保當你有一個nodeList時,你知道它在那個時刻表示DOM的狀態,並且你不必擔心狀態。 – 2011-05-11 09:21:34
indexOf方法很方便,但不能使用任何種類的變異,因爲NodeList可能是來自整個DOM的元素的集合。考慮'getElementsByTagName'返回的P元素的集合,它可能在DOM的各個部分,甚至不是兄弟姐妹 - 在哪裏添加「推」P?有用於修改DOM的DOM方法,NodeLists只是通過名稱,tagName,類等來保持對它們的組的引用的便利方式。 – RobG 2011-05-11 09:26:47