
- •Язык сценариев JavaScript Диалоговое окно (prompt)
- •Окно с сообщением (alert)
- •Условный оператор
- •Оператор switch и его свойства
- •День недели
- •Оператор цикла арифметического типа
- •Массивы
- •Функция определения выходного/рабочего дня
- •События
- •Обработка значений из формы
- •Передача параметров по ссылке
- •Использование имени формы в качестве параметра функции
- •Иерархия объектов в JavaScript
- •Объект location
- •Определение выделенного элемента
- •Расположение текста и изображения в ячейке таблицы
- •Текстовая область
- •Свойства переключателя
- •Расписание занятий
- •Выбор характеристик издания
- •Использование флажков в анкете переводчика
- •Использование атрибута id
- •Раскрывающиеся списки
- •Использование списка в задаче оформления заказа на витражи
- •Использование списка в анкете переводчика
- •Обработка анкеты переводчика
- •Задание № 1
- •Задание № 2
- •Задание № 3
- •Число k должно вводится через диалоговое окно JavaScript и отображаться на экране перед таблицей.
- •Задание № 4
- •Задание № 5
Обработка анкеты переводчика
Напишем сценарий обработки анкеты переводчика. Сведения о тех языках, которыми владеет переводчик, требуется задать с помощью списка. Выбранные языки следует помещать в поле ввода многострочного текста, как на рис. 7.
|
Рис 7. Выбор с помощью списка |
Напомним, что событие change происходит в тот момент, когда значение элемента формы text, select или textarea изменилось, и элемент потерял фокус. Будем обрабатывать анкету переводчика следующим образом. Параметр обработки события поместим в тег <select>. Как только выбран конкретный язык, т. е. произошло событие Change, выполняется функция gr:
function gr(obj,m) { var r=100*(Number(((obj.elements[0])[m]).value)+1) s+=((obj.elements[0])[m]).text+"\r\n" obj.restext.value=s sum+=r obj.res.value=r }
Первый параметр — имя формы, второй — значение атрибута value выбранного элемента. Второй оператор обеспечивает формирование строки всех выбранных пользователем языков. Третий оператор помещает вычисленное значение в текстовое поле. В результате выполнения четвертого оператора присваивания в переменной sum формируется значение, которое, затем при нажатии кнопки Сумма будет выведено в текстовое поле. Последний оператор помещает значение для выбранного языка в соответствующее поле формы. Полностью документ со сценарием и формами может быть описан так, как указано в листинге 21.
Листинг 21. Реакция на событие change в теге <select>
<HTML> <HEAD> <TITLE>Реакция на событие Change в теге select</TITLE> <script language="JavaScript"> var s="" var sum=0 function gr(obj,m) { var r=100*(Number(((obj.elements[0])[m]).value)+1) s+=((obj.elements[0])[m]).text+"\r\n" obj.restext.value=s sum+=r obj.res.value=r } </script> </HEAD> <BODY> <FORM name="form1"> <H3>Анкета переводчика</H3> <TABLE border=3 bgcolor=silver> <TR><TH>Выбранный язык</TH><TH>Результат</TH></TR> <TR> <TD valign=top> <select name="data" size=6 onChange="gr(form1,form1.data.value)"> <option value="0">русский <option value="1">aнглийcкий <option value="2">французский <option value="3">немецкий <option value="4">китайский <option value="5">японский </select><P> <input type="text" name="res" size=15> </TD> <TD><textarea name="restext" cols=15 rows=6> </textarea><P> <input type="button" value=Сумма onClick="form1.resgr.value=sum"> <input type="text" name="resgr" size=10> </TD></TR></TABLE><p> <input type="reset" value="Отменить" onClick="sum=0; s=''"> </FORM> </BODY> </HTML>
Рассмотрим случай, когда значение атрибута обработки события — функция с одним атрибутом, который является именем тега <select>.
<select name="data" size=6 onChange="gr(form1.data)"> <option value="0">русский <option value="1">aнглийcкий <option value="2">фpaнцyзcкий <option value="3">немецкий <option value="4">китайский <option value="5">японский </select>
Для того чтобы получить доступ к значению в сценарии, выполняется конструкция obj.value, а свойство списка form позволяет получить доступ к объектам формы. Форма имеет несколько элементов, к которым доступ получен различными способами в следующем сценарии:
function gr(obj) { var r=100*(Number(((obj.form.elements[0])[obj.value]).value)+1) s+=((obj.form.elements[0])[obj.value]).text+"\r\n" obj.form.restext.value=s sum+=r obj.form.res.value=r }