- •Лабораторная работа №1 Основные положения
- •Пример 1. Вычисление площади треугольника
- •Задания
- •Лабораторная работа №2 Функция и обработка события
- •Пример 1. Нахождение площади треугольника.
- •Пример 2. Вычисление площади квадрата.
- •Задания
- •Лабораторная работа №3 Организация ветвлений в программах
- •Задания
- •Лабораторная работа №4 Методы в JavaScript
- •Пример 1. Нахождение максимального значения
- •Пример 1. Перестановка изображений
- •Пример 2. Простое вертикальное меню
- •Задания
- •Лабораторная работа №5 Переключатели
- •Пример 1. Вычисление площади фигуры.
- •Пример 2. Выбор параметров обтекания изображения текстом
- •Задания
- •Лабораторная работа №6 Флажки
- •Пример 1. Выбор характеристик издания
- •Пример 2. Использование флажков в анкете переводчика
- •Листинг 2. Данные, представленные флажком. Анкета переводчика
- •Упражнение
- •Лабораторная работа №7 Списки
- •Пример 1. Обработка анкеты переводчика
- •Пример 2. Тест "Города и памятники"
- •Лабораторная работа №8 Фреймы
- •Пример 1. Простая фреймовая структура
- •Пример 2. Фреймовая структура с загружаемыми документами
- •Пример 3. Обмен содержимым фреймов
- •Задания
- •Лабораторная работа №9 Повторяющиеся вычисления - циклы
- •Пример 1. Нахождение общего делителя
- •Пример 2. Совершенные числа
- •Пример 3. Определение свойств элемента формы
- •Лабораторная работа №10 Обработка и представление дат
- •Пример 1. Определение текущего времени
- •Пример 2. Пятница 13
- •Лабораторная работа №11 Работа со строками
- •Пример 1. Вывод символов строки в "столбик"
- •Пример 2. Вычисление количества повторений строки в тексте
- •Лабораторная работа №12 Массивы
- •Пример 1. Создание мультипликации с использованием массивов.
- •Пример 2. Бинарный поиск с формированием таблицы результатов
Пример 1. Обработка анкеты переводчика
Напишем сценарий обработки анкеты переводчика. Сведения о тех языках, которыми владеет переводчик, требуется задать с помощью списка, Выбранные языки следует помещать в поле ввода многострочного текста. Напомним, что событие 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 формируется значение, которое, затем при нажатии кнопки Сумма будет выведено в текстовое поле. Последний оператор помещает значение для выбранного языка в соответствующее поле формы. Полностью документ со сценарием и формами может быть описан так, как указано в листинге 1.
Листинг 1. Реакция на событие 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=3 onChange="gr(form1,form1.data.value)">
<option value=0>русский
<option value=1>английский
<option value=2>французский
</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>
Пример 2. Тест "Города и памятники"
Напишем сценарий обработки теста "Города и памятники". Названия городов и памятников задаются с помощью списков. Пользователь выбирает в левом перечне название города, а в правом - памятник, расположенный в этом городе. После нажатия кнопки Результат в текстовое поле выводится количество правильных ответов. В сценарии используются три глобальные переменные. Переменная q хранит последнее выбранное значение в левом столбце; переменная а - выбранное значение правого столбца; значение переменной sum содержит число правильных ответов. В двух списках для правильной пары "вопрос/ответ" совпадают соответствующие значения параметра value. Эти значения проверяются после выбора элемента списка правого столбца. Результат тестирования можно посмотреть, если нажать кнопку Результат. Сценарий, реализующий простую обработку теста, представлен в листинге 2.
Листинг 2. Простая тестирующая программа <HTML>
<HEAD>
<TITLE>Города и памятники.</TITLE>
<script>
<!--
var sum=0
var q
var a
function eq()
{ q=test.question.value
a=test.answer.value;
if (a==q) sum +=1
}
function result()
{ document.test.res.value=sum}
//-->
</script>
<BODY background="fon3.gif">
<h3 align=center>Города и памятники</hЗ>
<FORM name="test">
<TABLE border=3 align=center cellpadding=5
cellspacing=6 bgcolor= silver>
<TR><TH>Памятник</TH><TH>Находится в городе</ТН>
<TR><TD>
<select size =7 name="question"
onChange="q=test.question.value">
<option value="mad">Музей Прадо<br>
<option value="ber" >Рейхстаг<br>
<option value="mil">Оперный театр Ла Скала<br>
<option value="ier">Стена Плача<br>
<option value="mek">Священный камень Кааб<br>
<option value="spb">Медный Всадник<br>
<option value="mos">Третьяковская галерея<br>
<option value="par">Триумфальная Арка<br>
<option value="new">Статуя Свободы<br>
<option value="lon">Tayэp<br>
</select>
</TD>
<TD>
<select size=7 name="answer" onChange="eq()">
<option value="spb">Caнкт-петербург<br>
<option value="mos">Mocква<br>
<option value="mek">Meккa<br>
<option value="ier">Иepycaлим<br>
<option value="mil">Милан<br>
<option value="par">Пapиж<br>
<option value="mad">Мадрид<br>
<option value="lon">Лoндoн<br>
<option value="new">Нью-Йорк<br>
<option value="ber">Бepлин<br>
</select>
</TD></TR>
</TABLE>
<CENTER><P>
<input type="button" value="Результат" onclick="result()"><br>
Количество правильных ответов
<input type="text" name="res" size="5"><P>
<input type="reset" value= "Обновить" onclick="sum=0">
</FORM>
</BODY>
</HTML>
Задания
1. Проверить примеры из лабораторной работы. 2. Напишите сценарий, который позволяет выбрать для таблицы и составляющих ее ячеек либо цвет фона, либо фоновое изображение, либо и то и другое. Предусмотрите возможность задания своего цвета фона для каждой ячейки. 3. Напишите сценарий, который позволяет посчитать стоимость предполагаемой покупки. Задается список продуктов, цена за единицу товара и количество экземпляров.
