В списке свойств объекта Document, который приводился в предыдущем разделе, отсутствуют важные категории свойств – коллекции объектов документа. Эти свойства, представляющие собой массивы, являются сердцем ранней объектной модели документа. С их помощью обеспечивается доступ к некоторым специаль_ ным элементам документа:
anchors[]
Массив объектов Anchor, представляющих якорные элементы документа. Якорный элемент (anchor) – это именованная позиция в документе, котораясоздается с помощью тега <a> и в которой вместо атрибута href определяется атрибут name. Свойство name объекта Anchor хранит значение атрибута name. Полное описание объекта Anchor вы найдете в четвертой части книги.
applets[]
Массив объектов Applet, представляющих Java_апплеты в документе. Под_ робно апплеты обсуждаются в главе 23.
forms[]
Массив объектов Form, представляющих элементы <form> в документе. Каждый объект Form обладает собственным свойством_коллекцией с именем elements[], в котором содержатся объекты, представляющий элементы формы. Прежде чем форма будет отправлена, объекты Form вызывают обработчик события on_ submit. Этот обработчик может выполнить проверку правильности заполне_ ния формы на стороне клиента: если он возвратит значение false, броузер от_ менит операцию отправки формы. Коллекция forms[] – самое важное свойст_ во ранней версии DOM. Формы и элементы форм обсуждаются в главе 18.
images[]
Массив объектов Image, представляющих элементы <img> в документе. Свойст_ во src объекта Image доступно для чтения/записи. Запись строки URL_адреса в это свойство вынуждает броузер прочитать и отобразить новое изображение (в старых версиях броузеров размеры нового изображения должны были сов_ падать с размерами оригинала). Программирование свойства src объекта Image позволяет организовать листание изображений и простейшие виды анима_ ции. Подробнее об этом рассказывается в главе 22.
links[]
Массив объектов Link, представляющих гипертекстовые ссылки в документе. Гипертекстовые ссылки в языке HTML создаются с помощью тегов <a>, а при создании карт ссылок для изображений – с помощью тегов <area>. Свойство
320 Глава 15. Работа с документами
href объекта Link соответствует атрибуту href тега <a>: в нем хранится строка URL_адреса ссылки. Кроме того, объекты Link обеспечивают доступ к различ_ ным элементам URL_адреса через свойства, такие как protocol, hostname и pathname. Благодаря этому объект Link напоминает объект Location, обсуж_ давшийся в главе 14. Когда указатель мыши наводится на ссылку, объект Link вызывает обработчик события onmouseover, а когда уводится со ссылки – обработчик события onmouseout. Когда производится щелчок мышью на ссыл_ ке, объект Link вызывает обработчик события onclick. Если обработчик собы_ тия вернет false, броузер не выполнит переход по ссылке. Полное описание объекта Link приводится в четвертой части книги.
Как следует из имен этих свойств, они являются коллекциями всех ссылок, изо_ бражений, форм и прочего, что имеется в документе. Элементы этих массивов располагаются в том же порядке, в котором они находятся в исходном докумен_ те. Например, элемент document.forms[0] ссылается на первый тег <form> в доку_ менте, а document.images[4] – на пятый тег <img>.
Объекты, содержащиеся в этих коллекциях ранней версии DOM, доступны для JavaScript_программ, но вы должны понимать, что ни один из них не дает воз_ можности изменить структуру документа. Вы можете проверять адреса ссылок и изменять их, читать или записывать значения элементов форм и даже менять местами изображения, но вы не сможете изменить текст документа. Старые бро_ узеры, такие как Netscape 2, 3 и 4, а также IE 3, были не в состоянии переформа_ тировать текст документа после того, как он проанализирован и отображен. По этой причине ранняя версия DOM не позволяла (и не позволяет) вносить измене_ ния, которые могут привести к переформатированию текста. Например, ранняя версия DOM включает в себя API_функцию для добавления новых элементов <option> внутри элемента <select>. Это возможно потому, что HTML_формы ото_ бражают элементы <select> как раскрывающиеся меню, а добавление новых пунктов в такие меню не влияет на размещение других элементов формы. В то же время в ранней версии DOM отсутствует API_функция для добавления новых переключателей на форму или новых строк в таблицу, потому что эти изменения требуют переформатирования документа.