Учебник по VBScript
Dynamik HTML
© Питер, 2000

Продолжение

Четвертое упражнение по VBScript

В этом упражнении мы продолжим усовершенствование нашей страницы. Новые особенности, с которыми мы столкнемся в этом упражнении, такие:

  • выпадающий список, в котором пользователь может выбрать товар;
  • автоматическое назначение цены при выборе;
  • вычисление размера скидок на основе стоимости покупки;

Упражнение 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 затем вычисляется из подытога. Дальше мы вычисляем ставки налога и полный итог. Заканчивается процедура отображением разультатов на экране.

Развитие этого приложения

В этом примере минимальная стоимость покупки для применения скидок -- $1000. Что мешает нам сделать еще один порого для новых скидок, например, равным $100 000?

Резюме

Прогресс налицо. Эта страница получает данные от пользователя, обрабатывает их, делает необходимые проверки и возвращает пользователю результат -- и все без передачи данных на сервер и обратно.

В этом разделе вы познакомились:

  • с условными выражениями, которые позволяют избирательно выполнять вам блоки кода;
  • конструкциями циклов, которые дают возможность многократно выполнять однотипные действия при условии выполнения заданного требования.

Теперь, когда мы умеем вводить, обрабатывать и отображать данные, пришло время узнать, как проверять правильность данных перед посылкой на сервер.

P.S. Домашнее задание: выясните как работает справка.
[ назад | на главную | начало | дальше ]


 

 
Hosted by uCoz