В этом упражнении мы продолжим усовершенствование нашей страницы. Новые особенности, с которыми мы столкнемся в этом упражнении, такие:
- выпадающий список, в котором пользователь может выбрать товар;
- автоматическое назначение цены при выборе;
- вычисление размера скидок на основе стоимости покупки;
Упражнение 4: работа с циклами
В этом упражнении вы создадите документ HTML, который содержит сценарий, получающий данные со страницы, выполняет расчеты и выводит результат обратно на страницу. Кроме того, он будет оперировать с ценами на товар и расчитывать размер скидки на основе стоимости покупки.
- Скопируйте текст докуметна p0004.txt в текстовый редактор и сохраните с расширением.htm. Это часть HTML набранная для вас.
- Взгляните на документ. Заметьте появление элемента управления ListBox и дополнительных элементов типа Edit. Обратите внимание, как заполняется список товаров.
- Загрузите файл в Internet Explorer. Результат будет таким. Вы уже могли забыть о том, что нужно попытаться нажать на кнопку, так что мы напоминаем.
Теперь добавим на страницу сценарий, для того чтобы кнопка и выпадающий список перестали быть просто элементами художественного оформления.
- Добавьте (не скопируйте, а добавьте) выделенные строки в уже имеющийся документ.
<html>
<head>
<title>Учебник по VBScript - Упражнение 4 </title>
<SCRIPT LANGUAGE="VBScript">
<!--Для работы с несовместимым броузерами
Option Explicit
Dim Cost 'Номер продукта
Dim Qty 'Количество заказанного товара
Sub Button1_OnClick()
Dim AD ' AmountofDiscount
Dim AT ' AmountofTax
Dim DISCOUNT_LIMIT
Dim DISCOUNT_RATE
Dim SB 'SubtotalBefore
Dim SA 'SubtotalAfter
Dim TAX_RATE
Dim TC 'TotalCost
'Определение констант
DISCOUNT_LIMIT=1000
DISCOUNT_RATE=0.10
TAX_RATE=0.06
'Вычисление подытога
Qty=document.all.Edit1.value
SB=Qty*Cost
'Проверка на минимальный объем покупок
If (SB>DISCOUNT_LIMIT) Then AD=SB*DISCOUNT_RATE Else AD=0
SA=SB-AD
'Вычисление налога и итога
AT=SA*TAX_RATE
TC=SA+AT
'Отображение результатов
document.all.Edit3.value=CStr(SB) & " $"
document.all.Edit4.value=CStr(AD) & " $"
document.all.Edit5.value=CStr(SA) & " $"
document.all.Edit6.value=CStr(AT) & " $"
document.all.Edit7.value=CStr(TC) & " $"
End sub
Sub ListBox_onchange()
Dim intMnt
intMnt=CInt(document.all.ListBox.value)
Select Case intMnt
Case 1
Cost=645
Case 2
Cost=710
Case 3
Cost=320
Case 4
Cost=430
Case 5
Cost=940
Case 6
Cost=255
Case 7
Cost=150
End Select
document.all.Edit2.value=CStr(Cost) & " $"
End sub
-->
</SCRIPT>
</head>
...
- Сохраните файл, загрузите его в Internet Explorer. Результат будет, наверное, таким. Выберите один из товаров в списке. Заметим, что поле Цена единицы товара автоматически заполняется значением.
Как это работает
На странице сделанной в упражнении 4, есть две новых особенности: автоматическое присваивание цены и вычисление сидок. Мы рассмотрим каждую из них в отдельности.
Просмотр товаров
Это новшество созданно с помощью программы обработки события ListBox_onChenge(). Как вы, наверное, помните, элемент формы, генерирующий выпадающий список, называется ListBox. Этот элемент поддерживаетсобытие onChenge, которое происходит каждый раз при выборе элементов из списка. Используя инстукцию Select Case, мы получает значение элемента формы. В нашем примере элементы списка жестко зафиксированы в коде. В настоящих приложениях элементы обычно беруться из внешнего источника данных.
Sub ListBox_onchange()
Dim intMnt
intMnt=CInt(document.all.ListBox.value)
Select Case intMnt
Case 1
Cost=645
Case 2
Cost=710
Case 3
Cost=320
Case 4
Cost=430
Case 5
Cost=940
Case 6
Cost=255
Case 7
Cost=150
End Select
document.all.Edit2.value=CStr(Cost) & " $"
End sub
ПРИМЕЧАНИЕ Функции преобразуют строку в целое число (CInt) или наоборот (CStr). Это может пригодится вам в дальнейшем.
Вычисление скидок
Сценарий, предназначенный для вычисления скидок, начинается с задания нескольких констант, одна из которых устанавливает для минимальной стоимости покупки, с которой начинаются скидки, значение $1000, вторая -- значение скидки 10%. Наш расчет начинается с вычисления подытога перед назначением скидок и налогов.
После этого назначаются скидки с помощью конструкции If... Then.... Else. Мы сравниваем наш подытог с константой (минимум для скидок). Если подытог больше минимума, размер скидки вычисляется и сохраняется в переменной AD. Если подытог меньше или равен минимуму, значение переменной делается равным 0.
'Проверка на минимальный объем покупок
If (SB>DISCOUNT_LIMIT) Then AD=SB*DISCOUNT_RATE Else AD=0
Значение переменной AD затем вычисляется из подытога. Дальше мы вычисляем ставки налога и полный итог. Заканчивается процедура отображением разультатов на экране.