Как отличить живые и не живые коллекции NodeList? - PullRequest
13 голосов
/ 27 июля 2010

И document.getElementsByTagName ('div'), и document.querySelectorAll ('div') возвращают коллекцию NodeList.Разница лишь в том, что первый метод возвращает live-collection, а второй - статический.

Вопрос в том, есть ли возможность отличить один объект от другого только путем проверки этих объектов (т. Е. Не пытатьсядобавить / удалить некоторые элементы для проверки «живучести»)?

заранее спасибо

Ответы [ 2 ]

6 голосов
/ 11 марта 2011
a=document.querySelectorAll('a');
b=document.getElementsByTagName('a');

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

(в FF / Chrome)

6 голосов
/ 27 июля 2010

Интерфейс NodeList не зависит от своего мертвого или живого статуса.

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

Он содержит только свойство length и метод item, поэтому, боюсь, в настоящее время невозможно определить, является ли объект живым, не манипулируя DOM и не видя эффектов.

...