IE 4 не поддерживает методы getElementById() и getElementsByTagName() объекта
Document. Вместо этого у объекта Document и у всех элементов документа есть мас_
358 Глава 15. Работа с документами
сив свойств с именем all[]. Как следует из имени, этот массив представляет все (all) элементы документа или все элементы, содержащиеся в другом элементе. Обратите внимание, что массив all[] не просто представляет дочерние узлы до_ кумента или элемента – он содержит всех потомков независимо от глубины вло_ женности.
Массив all[] может использоваться несколькими способами. Если он индекси_ руется с помощью целого индекса n, то возвращает n+1_й элемент документа или родительского элемента. Например:
var e1 = document.all[0]; // Первый элемент документа
var e2 = e1.all[4]; // Пятый элемент в элементе 1
Элементы нумеруются в порядке их расположения в исходном тексте докумен_ та. Обратите внимание на одно существенное различие между API IE 4 и стан_ дартом DOM: в IE нет понятия текстовых узлов, поэтому массив all[] содержит только элементы документа, но не текст внутри них.
Обычно значительно полезнее иметь возможность ссылаться на элементы доку_ мента по именам, чем по номерам. Эквивалентом вызова метода getElementById() в IE 4 является индексирование массива all[] с помощью строки, а не числа. Ко_ гда вы пользуетесь этой возможностью, IE 4 возвращает элемент, у которого ат_ рибут id или name равен указанному значению. Если имеется более одного такого элемента (что возможно, т. к. часто имеется несколько элементов формы, напри_ мер переключателей, с одинаковыми значениями атрибута name), результатом будет массив этих элементов. Например:
var specialParagraph = document.all["special"];
var radioboxes = form.all["shippingMethod"]; // Может вернуть массив
JavaScript позволяет также записывать эти выражения, указывая индекс масси_ ва как имя свойства:
var specialParagraph = document.all.special;
var radioboxes = form.all.shippingMethod;
Подобное использование массива all[] предоставляет ту же базовую функцио_ нальность, что и методы getElementById() и getElementsByName(). Основное отличие состоит в том, что массив all[] объединяет возможности этих двух методов, что может привести к проблемам при непреднамеренном применении одинаковых значений атрибутов id и name для несвязанных между собой элементов.
У массива all[] есть необычный метод tags(), который может использоваться для получения массива элементов по имени тега:
var lists = document.all.tags("UL"); // Ищет все теги <ul> в документе
var items = lists[0].all.tags("LI"); // Ищет все теги <li> внутри первого <ul>
Этот синтаксис IE 4 предоставляет практически ту же функциональность, что и метод getElementsByTagName() объектов Document и Element в DOM. Обратите вни_ мание, что в IE 4 имя тега должно содержать только строчные буквы.