Коллекция - это структура данных JavaScript, похожая на массив. Отличие коллекции от массивов заключается в том, что массивы программист создает сам в коде программы и заполняет их данными; коллекции же создаются браузером и "населяются" объектами, связанными с элементами Web-страницы. Коллекцию можно рассматривать как другой, зачастую более удобный способ доступа к объектам Web-страницы.
Например, если на странице имеются формы с именами f, g5 и h32, то у объекта documentесть соответствующие свойства-объектыdocument.f, document.g5 и т.д. Но кроме того, у объекта document есть свойство forms, являющееся коллекцией (массивом) всех форм, и значит, к тем же самым объектам форм можно обратиться как document.forms[0],document.forms[1] и т.д. Это бывает удобным, когда необходимо выполнить какие-то действия со всеми объектами форм на данной странице. Указывая свойства того или иного объекта, мы будем обычно коллекции писать со скобками: forms[], images[], frames[], чтобы подчеркнуть, что это не обычные свойства, а коллекции.
Нумеруются элементы коллекции, начиная с нуля, в порядке их появления в исходном HTML-файле. Доступ к элементам коллекций осуществляется либо по индексу (в круглых или квадратных скобках), либо по имени (тоже в круглых или квадратных скобках, либо через точку), например:
window.document.forms[4] // 5-я форма на страницеwindow.document.forms(4) // равносильно предыдущему window.document.forms['mf'] // форма с именем 'mf'window.document.forms('mf') // равносильно предыдущему window.document.forms.mf // равносильно предыдущемуwindow.document.mf // равносильно предыдущему
Способы в 3-4 строчках удобны, когда имя элемента коллекции хранится в качестве значения переменной. Например, если мы задали var w="mf", то мы можем обратиться к форме с именем " mf " как window.document.forms[w]. Именно так мы поступили выше в разделе про оператор for...in, когда выписывали список всех свойств объекта document.
Как и у обычных массивов, у коллекций есть свойство length, которое позволяет узнать количество элементов в коллекции. Например, document.images.length.
Перечислим основные коллекции в объектной модели документа.
Таблица 3.1. Коллекции в объектной модели документа
Коллекция
Описание
window.frames[]
Все фреймы - т.е. объекты, отвечающие контейнерам<FRAME>
document.all[]
Все объекты, отвечающие контейнерам внутри контейнера <BODY>
document.anchors[]
Все якоря - т.е. объекты, отвечающие контейнерам <A>
document.applets[]
Все апплеты - т.е. объекты, отвечающие контейнерам<APPLET>
document.embeds[]
Все вложения - т.е. объекты, отвечающие контейнерам<EMBED>
document.forms[]
Все формы - т.е. объекты, отвечающие контейнерам<FORM>
document.images[]
Все картинки - т.е. объекты, отвечающие контейнерам<IMG>
document.links[]
Все ссылки - т.е. объекты, отвечающие контейнерам <A HREF="..."> и <AREA HREF="...">
document.f.elements[]
Все элементы формы с именем f - т.е. объекты, отвечающие контейнерам <INPUT> и <SELECT>
document.f.s.options[]
Все опции (контейнеры <OPTION> ) в контейнере <SELECT NAME=s> в форме <FORM NAME=f>
navigator.mimeTypes[]
Все типы MIME, поддерживаемые браузером (список см. на сайте IANA)
function_name.arguments[]
Все аргументы, переданные функции function_name()при вызове