Шрифт:
Если осуществлять доступ к элементам документа при помощи коллекции all с использованием номеров, то доступ ко всем элементам документа будет выглядеть следующим образом:
var elements = []; //Массив, в который скопируем ссылки на объекты страницы
var i;
for (i=0; i<document.all.length; i++)
elements[i] = document.all(i);
В примере 13.3 в коллекции all содержится шесть элементов, поэтому массив elements после выполнения приведенного фрагмента программы должен содержать шесть элементов. Обратите внимание, как осуществляется доступ к элементам коллекции all: имя метода item можно опускать.
Если бы доступ к элементам коллекции осуществлялся по имени HTML-элементов, то можно было бы получить объекты, описывающие заголовок и абзац, следующим образом:
var h = document.all(«main_part»);
var p = document.all("par1");
Возможно также прямое обращение к поименованным элементам документа. При использовании этого способа предыдущий фрагмент программы будет выглядеть следующим образом:
var h = main_part;
var p = par1;
Кроме достаточно богатого набора свойств, можно пользоваться методом write объекта document для добавления к HTML-документу любого текста прямо из сценария. Метод write принимает строку, в которой может содержаться любое HTML-форматирование, например:
document.write('<H1 id = «part2»>Текст, напечатанный сценарием</H1>')
При выполнении этого фрагмента программы не только появляется текст заголовка в окне браузера, но и создается объект с именем part2, к которому можно получить доступ с использованием той же коллекции all.
Использование методов open(URI_документа) и close объекта document позволяет открывать новые HTML-документы и закрывать окно браузера с текущим документом, например:
open(«13.1.html») //Открываем пример 13.1 в новом окне
close; //Пытаемся закрыть текущий документ
Итак, выше рассмотрено, как можно получить доступ к объектам, описывающим HTML-элементы документа. Теперь же рассмотрим, какие общие действия можно производить с полученными объектами.
Свойства, которые доступны для большинства элементов документа, приведены в табл. 13.3.
В табл. 13.4 приводятся основные методы, которые можно использовать для манипулирования большинством элементов документа.
С использованием приведенных в таблицах свойств и методов можно осуществлять практически любые манипуляции с документом, показываемым в окне браузера. Сейчас дополнительно будут рассмотрены некоторые особенности доступа к элементам таблиц: доступ к строкам и ячейкам.
Объекты, описывающие таблицы, поддерживают внутреннюю коллекцию rows, с помощью которой организовывается доступ к отдельным строкам таблицы. Эти объекты поддерживают также методы insertRow(номер) и deleteRow(номер), которые принимают в качестве параметра номер строки и позволяют вставить или удалить строку таблицы. Если метод insertRow вызвать без параметра, то строка будет добавлена в конец таблицы. При успешном добавлении строки метод insertRow возвращает ссылку на объект, описывающий созданную строку.
Каждым элементом коллекции rows является объект, одним из свойств которого является коллекция cells, содержащая объекты, управляющие ячейками таблицы. Каждый элемент коллекции cells позволяет оперировать конкретными ячейками таблицы. Добавление ячеек в строку таблицы можно осуществлять при помощи метода insertCell(номер) объектов коллекции rows. Удалять же ячейки можно, используя метод deleteCell(номер) объектов той же коллекции.
Наконец, как завершающий этап знакомства с объектом document создадим несколько страниц, использующих его возможности.
Страница следующего примера будет представлять собой своеобразный каталог изображений. Изображения вместе с текстом, описывающим их, будут помещены в таблице. При этом помещение и удаление данных должно выполняться интерактивно (то есть этим управляет пользователь). Внешний вид страницы примера приведен на рис. 13.1.
Рис. 13.1. Изменяемая страница (каталог изображений)
При реализации примера код сценария и HTML-код страницы расположены в отдельных файлах. Файл документа может иметь произвольное имя. Он выглядит следующим образом (пример 13.4).
<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.01 Transitional//EN»>
<HTML>
<HEAD>
<TITLE>Пример модифицирования таблицы сценарием</TITLE>
<SCRIPT type = "text/javascript" src = "script_13_4.js"></SCRIPT>
</HEAD>
<BODY>
<FIELDSET>
<LEGEND>Новое изображение</LEGEND>
Код: <INPUT name = "txtCode" maxlength = "4" size = "5">
Описание: <INPUT name = "txtName" maxlength = "500">
<BR>Путь к изображению: <INPUT type = "file" name = "txtFile">
<BR><INPUT type = "button" value = "Добавить рисунок"
onClick = "add_image(txtCode.value, txtName.value, txtFile.value)">
<INPUT type = "button" value = "Удалить рисунок..."
onClick = "delete_image">
</FIELDSET>
<TABLE width = "100%" border>
<!–Определения столбцов таблицы–>
<COL width = "60">
<COL>
<COL width = "130">
<THEAD>
<TR><TH>Код<TH>Описание<TH>Просмотр
</THEAD>
<TBODY id = "mytable">
<!–Сюда сценарий вставляет записи–>
</TBODY>
</TABLE>
</BODY>
</HTML>