Роботландский Университет © А.А.Дуванов |
В уроке рассмотрены следующие темы:
Для каждого тега внутри гипертекстовой страницы браузер создает объект. Доступ к этому объекту программист получает при помощи имени, которое задается атрибутом name. Таким образом, появляется возможность программного управления тегами.
Пусть, например, в HTML-коде задан тег для вывода на экран картинки:
<IMG src=./pic/ris1.gif border=0 alt="" name=pic>
Браузер строит для этого тега экземпляр стандартного объекта Image с именем pic. Получить к нему доступ можно при помощи эквивалентных конструкций:
window.document.images["pic"] window.document.images.pic
или, внутри текущего окна:
document.images["pic"] document.images.pic
Известно, например, что у объекта Image есть свойство src, содержащее указание на файл с картинкой. Можно в программе прочитать это свойство, записав обращение:
document.images.pic.src
Можно, не только прочитать, но и изменить значение этого свойства:
document.images.pic.src = "./pic/ris2.gif";
![]() |
Работая с гипертекстовыми документами, мы не раз имели возможность вводить текст в поле ввода, выбирать пункт меню, отмечать флажком правильный ответ, нажимать кнопку. При этом мы всегда ожидали от документа осмысленной реакции.
Все эти интерфейсные элементы выводятся на экран браузера при помощи
команды-контейнера
Блок
атрибут | описание |
---|---|
action |
Задает адрес для отправки формы по сети. Можно послать форму на сервер, где она будет обработана программой (CGI-скриптом), а можно указать в качестве значения атрибута адрес электронной почты, и форма будет послана по e-mail. Например, можно написать так: <FORM action="mailto:myaddres@mail.ru"> |
enctype |
Задает кодирование передаваемых по сети данных. В этой книге мы не рассматриваем серверных программ, которые принимают и автоматически обрабатывают полученные из формы данные. Но можно легко устроить так, что браузер пошлет форму, заполненную пользователем, по вашему электронному адресу. Вы эти данные изучите сами или направите на обработку в собственную программу. Все будет хорошо работать, если задать значение атрибута enctype так: <FORM action="mailto:myaddres@mail.ru" enctype="text/plain"> |
method |
Задает способ передачи формы. Атрибут имеет два значения: get и post. Метод post более универсальный. Не вникая в детали работы этих двух методов, предлагаем магическую запись, которая заставит браузер послать форму по указанному адресу e-mail: <FORM action="mailto:myaddres@mail.ru" enctype="text/plain" method="post"> |
name |
Этот атрибут задает имя формы. Когда имя задано, можно использовать его в скриптах для доступа к полям формы. Если форму посылать никуда не надо, а нужна она для создания диалога с пользователем, то из всех атрибутов потребуется только один name: <FORM name="anketa"> Теперь в JavaScript-коде можно обратиться к этой форме так: document.anketa. Если форма содержит строковое поле с именем work, то можно присвоить содержимое этого поля переменной: var str = document.anketa.work.value; Можно изменить значение этого поля: document.anketa.work.value = "вебмастер"; И экранное отображение поля после этого присваивания соответственно изменится. |
Приведенный ниже пример можно использовать как образец кодирования посылки формы по электронной почте.
Если поместить этот код в свою HTML-программу, то на гипертекстовой страничке возникнет картинка, подобная той, что изображена справа. Пользователь нажимает кнопку сброс и поля принимают значения, установленные по умолчанию. Затем форма заполняется и по нажатию на кнопку послать заказ отправляется по адресу myaddres@mail.ru |
![]() |
Обычно браузер не сам отсылает форму, а поручает работу почтовой программе, установленной по умолчанию в операционной системе компьютера (например, Outlook).
Письмо посылается в виде:
Subject: Форма отправлена из Microsoft Internet Explorer name=Горбунков Семен Семенович email=gorbun@mail.ru obj=Программный соковыжиматель |
Таким образом, письмо составляется из пар
В качестве обратного адреса в письме указывается адрес пользователя компьютера с которого отправляется форма.
Вы можете провести серию опытов, посылая формы самим себе.
Замечание 1. Форма отправляется браузером по электронной почте лишь в том случае, если в его настройках указан соответствующий уровень безопасности.
Замечание 2. Приведенный код наглядно показывает, что внутри блока<FORM>...</FORM> могут располагаться обычные теги HTML.
С помощью тега <INPUT> в форме можно задать
разные элементы ввода и управления.
атрибут name
Каждый тег <INPUT> может содержать атрибут name. Значение этого атрибута можно использовать как имя объекта, который браузер создает для этого тега. Пусть, например, задана такая форма:
<FORM name=anketa> <INPUT type=text value=крошкосшиватель name=obj> </FORM> |
В программе на JavaScript можно использовать конструкцию
document | | объект document (родитель объект window) |
document.anketa | | объект anketa (родитель объект document) |
document.anketa.obj | | объект obj (родитель объект anketa) |
document.anketa.obj.value | | cвойство value объекта obj соответствует атрибуту value тега <INPUT> c именем obj |
Можно прочитать значение атрибута value:
var str = document.anketa.obj.value; |
А можно и изменить значение этого атрибута:
document.anketa.obj.value = "пылеистребитель"; |
Значение атрибута namе приравнивается к имени переменной, поэтому при выборе названия нужно использовать все правила построения идентификаторов, рассмотренные в уроке 2. В частности, нельзя использовать в имени русские буквы и цифру в качестве первого символа.
Имена, заданные атрибутом namе, должны быть разными внутри
одной формы, но могут совпадать с именами полей других форм
браузер не запутается, ведь формы разные и они отображаются в разные
объекты.
атрибут type (экранные кнопки)
Конкретный вид интерфейсного элемента <INPUT> задается атрибутом type. Рассмотрим значения этого атрибута, задающие экранные кнопки.
значение | описание | ||
---|---|---|---|
reset |
Задает кнопку, нажатие на которую автоматически возвращает форму в
исходное состояние (все поля ввода формы принимают значения,
установленные по умолчанию).
|
||
submit |
Задает кнопку, нажатие на которую отправляет форму в сеть.
|
||
button |
Задает обычную кнопку. Нажатие на эту кнопку для браузера ничего не
означает (если, конечно, не задана программа обработки нажатия в
атрибуте onclick).
|
Объект, построенный браузером для тега
Ниже приводится пример, демонстрирующий работу с этим свойством.
Поработайте с экранными кнопками и разберитесь в алгоритме работы программы.
Можно упростить обращение к полям формы, если использовать указание this ссылку на текущий экземпляр объекта и указание this.form ссылку на объект, построенный для текущей формы:
\n'+
'\n'+
' |
Как видите, в этом коде не потребовалось имя для формы. Синонимом имени внутри формы оказалась конструкция this.form.
А внутри второго тега <INPUT> не потребовалось имя этого тега, вместо него использован синоним this.
Замечание. Объект, построенный для любого элемента управления или ввода, содержит свойство form, являющееся указателем на объект-форму, содержащий этот элемент.
Значения text и password для атрибута type
тега
значение | описание |
---|---|
text |
Обычная строка ввода. Дополнительные атрибуты:
<INPUT type=text value=Варвара size=10 maxlength=15> |
password |
Строка для секретного ввода. От значения text отличается только тем, что символы на экране при вводе отображаются звездочками. Секретная строка не копируется в буфер обмена.
<INPUT type=password value="" size=5 maxlength=5> |
Объект, построенный браузером для тега
value | | текущее содержание строки ввода; |
defaultvalue | | значение атрибута value в соответствующем теге <INPUT> |
Следующий скрипт иллюстрирует смысл свойств value и defaultValue.
|
Поработайте на этом стенде и по приведенному ниже коду разберитесь, как он устроен.
Введите пароль и нажмите пуск.
|
\n'+
'\n'+
'
|
Зачетный класс здесь.
Постарайтесь сделать вашу программу максимально универсальной, чтобы ее можно было достаточно легко приспособить к другой теме, другому числу вопросов, другому алгоритму вычисления оценки.
Нажмите сброс и приступайте к решению.
Чтобы увидеть результаты работы, нажмите кнопку оценка.
|
Нажмите сброс и приступайте к решению. Вы можете пользоваться подсказкой, но это снижают оценку!
Чтобы увидеть результаты работы, нажмите кнопку оценка.
|
|
![]() |