Кроме document. getElementById() имеются и другие методы и свойства, полезные для доступа к узлам документа. Особенно ценными являются коллекции, предлагаемые моделью DOM уровня 0 для поддержки традиционных подходов JavaScript.   Поскольку во многих старых HTML-документах для идентификации элементов <form>, <input>, <select>, <textarea>, <img>, <a>, <area> и <frame> используется атрибут name (а не id), необходимо иметь возможность получить доступ к таким элементам с помощью name. Для этого используется метод getElementsByName() объекта Document. Этот метод принимает в качестве аргумента строку, указывающую имя (т.е. значение атрибута name) соответствующего элемента. Например:
tagList = document.getElementsByName('myTag');
Этот метод может возвращать список узлов, а не один узел. Дело в том, что в традиционном HTML уникальность значения атрибута name в строгом смысле не требуется, так что, например, одно и то же значение name могут иметь дескриптор <img> и элемент <form>. Также допускается иметь в документе дескрипторы <input> разной формы с одинаковыми именами. Как и в случае любой коллекции JavaScript, здесь можно использовать свойство length, чтобы выяснить длину списка объектов, и просмотреть сам список, используя метод item() или обычный синтаксис массива. Например:
tagList = document.getElementsByName('myTag'); for (var i = 0; i < tagList.length; i++) alert(tagList.item(i).nodeName);
To же самое можно получить, используя немного другой синтаксис:
tagList = document.getElementsByName('myTag'); for (var i = 0; i < tagList.length; i++) alert(tagList[i].nodeName);
Возникает вопрос: если метод getElementsByName() возвращает список элементов HTML с одним и тем же значением атрибута name, почему getElementById() не делает то же самое. Напоминаем, что значение каждого из элементов id должно быть уникальным. Разрешение для getElementById() режима, аналогичного режиму getElementsByName(), стимулировало бы еще большую свободу стиля HTML, которая и так уже создает достаточно проблем. Если документ оказывается логически непоследовательным по причине того, что в нем имеются элементы id с одинаковыми значениями, методgetElementById() может не работать вообще либо возвращать только первый или только последний элемент. Иногда невозможно сразу обратиться к конкретной точке дерева документа, поэтому приходится начинать с вершины дерева и продвигаться вниз по его иерархии. Имеются два свойства объекта Document, предлагающие исходные пункты для начала обхода. Свойство document. documentElement указывает на корневой элемент в дереве документа. Для документов HTML это будет дескриптор <html>. Вторую возможную исходную точку дает свойство document .body, которое ссылается на узел, соответствующий в дереве дескриптору <body>. Некоторый интерес может представлять также определение DOCTYPE соответствующего файла. На это определение ссылается document.doctype, но указанный узел не является модифицируемым. Может показаться, что польза от соответствующей информации не слишком велика, но значение document. doctype позволяет выяснить, с каким видом документа вы работаете.. С целью обеспечения обратной совместимости DOM поддерживает объектные коллекции, популярные в первых версиях браузеров. Эти коллекции составляют DOM уровня 0, что приблизительно эквивалентно объектной модели Netscape 3. Коллекции, определенные в DOM уровня 0, представлены в таблице, и обращаться к ним можно по номеру (document.forms[0]), ассоциативно (document.forms[ 'myform' ]) или непосредственно (document.myform). Можно также использовать метод item(), обеспечивающий доступ к индексу массива (document.forms.item(0)), хотя это нетепично и не всегда поддерживаеться в старых версиях JavaScript, поэтому такого способа лучше избегать.
Коллекция Описание
document.anchors[] Коллекция всех анкеров на странице, определенных с помощью <a name=""> </a>
document.applets[] Коллекция всех аплетов Java на странице
document.forms[] Коллекция всех дескрипторов <form> на странице
document.images[] Коллекция всех изображений на странице, определенных с помощью дескрип-торов <img>
document.links[] Коллекция всех ссылок на странице, определенных с помощью <a href=""> </a>
Вы, очевидно, заметили, что таблица не включает фирменные коллекции типа embeds[ ], all[ ], layers[ ] и т.п. Причина в том, что DOM стремится исключить зависимость сценариев от фирменных возможностей DHTML. Однако старые привычки изживаются в Web очень медленно.