Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Чем отличаются объекты HTMLCollection и NodeList? (https://javascript.ru/forum/events/11768-chem-otlichayutsya-obekty-htmlcollection-i-nodelist.html)

Cooskon 12.09.2010 17:54

Чем отличаются объекты HTMLCollection и NodeList?
 
Сабж. Вроде бы и работается с ними одинаково, и на удаление элементов они оба реагируют изменением свойства length.

exec 12.09.2010 18:13

В HTMLCollection есть метод namedItem, осуществляющий поиск по имени. Также поиск может осуществляться через обращение к свойству, соотв. имени или ID элемента.

Octane 12.09.2010 18:16

HTMLCollection используется для таких коллекций, как:
  • window.frames
  • document.images
  • document.applets
  • document.links
  • document.forms
  • document.anchors
  • form.elements
  • table.rows
  • и т.д.

HTMLCollection.prototype.test = function () {
    alert("O_o");
};

document.links.test();

try {
    document.getElementsByTagName("*").test();
} catch (error) {
    alert(error);
}

Cooskon 12.09.2010 18:21

Цитата:

Сообщение от exec
В HTMLCollection есть метод namedItem, осуществляющий поиск по имени. Также поиск может осуществляться через обращение к свойству, соотв. имени или ID элемента.

Сомнительный метод. Зачем получать элемент по id из коллекции, если проще сделать document.getElementById? Хотя поиск по имени - хорошая штука.

А что в таком случае есть у NodeList такого, чего нет у HTMLCollection?

Цитата:

Сообщение от Octane
HTMLCollection используется для таких коллекций, как:

Об этом я знаю: собственно, так и узнал о существовании этих двух объектов, сравнивая ошибки, выдаваемые document.getElementsByTagName("tag").notSetMethod( ) и element.children.notSetMethod();

Чем же функционально различаются эти объекты (ну, кроме метода namedItem, описанного выше), так и не сказано.

Octane 12.09.2010 18:32

Ну метод namedItem не обязательно вызывать, можно же так сделать: document.forms["reg-from"].elements["given-name"], а с NodeList такое не прокатит.


Часовой пояс GMT +3, время: 17:21.