VBScript. Учебник

advertisement
1
Учебник по VBScript
Dynamik HTML
© Питер, 2000
Что такое VBScript
VBScript (Visual Basic Scripting Edition) - это упрощенная версия Visual Basic. Не имея
таких широких возможностей, как исходный Visual Basic, он, тем не менее является
мощным и простым в использовании средством, которое может использоваться для
"оживления" вашей WEB-страницы. Если вы уже знакомы с Visual Basic или Visual Basic
for Applications, вы найдете, что работа в VBScript очень проста и необычайно
эффективна. Не смущайтесь, если вы не работали с другими версиями Visual Basic.
VBScript
очень
прост
в
изучении,
даже
для
новичков.
Как пользоваться эти учебником
Этот учебник состоит из пяти уроков. каждый урок знакомит вас с новой частью
языкаVBScript. По дороге вы узнаете, как добавлять расчеты, форматирования и
проверки на ваши страницы. в конце каждого урока есть упражнение, где вы сможете
применить полученные знания по созданию страниц с помощью VBScript. Вот краткий
обзор этих уроков:





Вставка сценария на VBScript в Web-страницы. вы научитесь добавлять
сценарий на VBScript на страницу, а также узнаете различные методы для связи
кода сценария и HTML.
Работа с переменными. Что значит язык без переменных? Здесь вы узнаете
как определять и использовать переменные в ваших программах сценария.
Объекты VBScript. Апплеты Java и элементы управления ActiveX расширяют
возможности HTML. В течение этого урока вы узнаете, как связывать эти
объекты с помощью языка VBScript.
Управляющие операторы VBScript. Условные переходы и циклы - предмет
данного урока.
Использование VBScript при создании форм. С помощью языка VBScriptвы
можете проверять формы перед отправкой. Вы увидите это в пятом уроке.
Упражнения шаг за шагом
Как уже было сказано, в каждый из пяти уроков входит упражнение, позволяющее
увидеть, как изпользовать полученные знания. Вы найдёте описание каждого
компонента примера, так что после выполнения этого упражнения многое из того, о
чем говорилось на уроке, станет для вас осязаемым. Ссылку выполненного упражнения
вы ссможете найти в тексте урока. Для каждого урока есть несколько
примеров,сопровождаемых подробными инструкциями.
Урок 1. Вставка сценария на VBScript в Web-страницы
Языки сценария, такие как Java Script и VBScript, созданы как расширение для HTML.
Броузер получает сценарий вместе с остальной частью Web-страницы. именно броузер
должен проанализировать и выполнить сценарий. В HTML был включен тэг,
используемый для внедрения сценария на страницу, тэг - <SCRIPT>.
Тэг <SCRIPT>
2
Сценарий на странице должен располагаться
</SCRIPT>. Пример показан ниже:
внутри
пары
тэгов
<SCRIPT>
и
<HTML>
<HEAD>
<TITLE>Работа в VBScript</TITLE>
<SCRIPT LANGUAGE="VBSCRIPT">
MsgBox "Добро пожаловать на мою страницу!"
</SCRIPT>
Отркывающий тэг включает аргумент LANGUAGE,который указывает используемый язык
сценария. Он необходим из-за того, что существует несколько языков сценария. Без
указания значения этого аргументаброузер не будет знать, на каком из них написан
сценарий (по умолчанию это Java Script).
Хотя принципиально вы можете распределить сценарий по всему документу, исползуя
такую конструкцию, обычно сценарий располагается одним большим блоком в начале
или в конце документа. Это облегчает его обработку и адресацию внутри документа.
Работа с несовместимыми броузерами
Не все броузеры поддерживают языки сценария. Некоторые поддерживают только Java
Script. Только Microsoft Internet Explorer поддерживает VBScript. Те броузеры, которые
не поддерживают сценарий, воспринимают его как текст и отражают в окне как часть
страницы. Вряд ли это является осуществлением вашей мечты. Простым способом для
решения этой проблемы является заключение сценария в тэги комментария (<!-- и ->). Ниже показан тот же пример с применением тегов комментария.
<HTML>
<HEAD>
<TITLE>Работа в VBScript</TITLE>
<SCRIPT LANGUAGE="VBSCRIPT">
<!-MsgBox "Добро пожаловать на мою страницу!"
-->
</SCRIPT>
</HEAD>
</HTML>
Теперь, если просматривать страницу броузером, не поддерживающим VBScript, он
просто проигнорирует эту часть страницы, не отображая ничего на экране.
Первое упражнение по языку VBScript
Лучший способ выучить любой язык - работать с ним. так что убедимся в этом с
помощью упражнения 1, в котором вы научитесь вставлять код сценария на страницу.
Следуйте инструкциям для создания вашей первой страницы на VBScript.
Упражнение 1: вставка сценария на VBScript на страницу
В этом упражнении вы создадите документ HTML и вставите туда простой сценарий для
ответа на событие, порожденное щелчком на кнопке. Вам нужно быть знакомым с
созданием
и
проверкой
документов
HTML.
Создание документа HTML
3

Откройте текстовый редактор и наберите там следующий текст:
<HTML>
<HEAD>
<TITLE>Работа в VBScript: Упражнение 1</TITLE>
</HEAD>
<BODY>
<H1>Пример работы в VBScript</H1>
<P>Это первое упражнение по работе в VBScript. Нажмите
на кнопку для получения сообщения.</P>
<FORM name="frmExercise1">
<INPUT TYPE="Button" Name="cmdClickMe" VALUE="Нажми меня">
</FORM>
</HEAD>
</HTML>

Сохраните файл и протестируйте его, запустив в Internet Explorer. Результатом
будет такая страница.

Попробуете "нажать" на кнопку Нажми меня. Случилось что-нибуть?
Теперь добавим сценарий для получения ответа от кнопки Нажми меня. Новая версия
этого упражнения находится в файле p0001a.htm.
Добавление сценария

Вновь откройте документ, созданный в
выделенные строки:
части 1. Измените
его, добавив
<HTML>
<HEAD>
<TITLE>Работа в VBScript: Упражнение 1</TITLE>
</HEAD>
<BODY>
<H1>Пример работы в VBScript</H1>
<P>Это первое упражнение по работе в VBScript. Нажмите
на кнопку для получения сообщения.</P>
<FORM name="frmExercise1">
<INPUT TYPE="Button" Name="cmdClickMe" VALUE="Нажми меня">
<SCRIPT FOR="cmdClickMe" EVENT="onClick" LANGUAGE="VBSCRIPT">
MsgBox "Добро пожаловать на мою страницу!"
</SCRIPT>
</FORM>
</HEAD>
</HTML>
Сохраните файл и загрузите снова в Internet Explorer. Опять щелкните на кнопке.
Результат будет примерно таким.
Как это работает
Рассмотрим три строки в коде, которые мы добавили. Мы хотим, чтобы вы имели
твердую уверенность в том, что делает сценарий на VBScript и как он это делает.
Первая строка определяет место, где будет находиться сценарий. Агумент FOR
определяет, что данный сценарий создан для кнопки под названием cmdClickMe. Это
название кнопки мы дали внутри тэга <INPUT>. Аргумент EVENT указывает на то, что
сценарий доожен начать работу при "нажатии" кнопки (щелчке на ней). Аргумент
LANGUAGE
определяет
язык
для
этого
модуля
-VBScript.
<SCRIPT
FOR="cmdClickMe"
EVENT="onClick"
LANGUAGE="VBSCRIPT">
Вторая строка -- единственная строка на VBScript в этом документе. Функция MsgBox
просто показывает диалоговое окно сообщения. О ней вы узнаете больше несколько
позже.
Третья
строка
обозначает
конец
сценария.
4
В предыдущей части мы просто вставили модуль VBScript посте тега HTML,
отвечающего за появление кнопки. Этот метод работает, но его редко используют.
HTML и сам по себе труден для восприятия. Чередование HTML и сценария приведет к
еще большей путанице. Гораздо лучше будет, если поместить весь сценарий в одном
месте документа. Следующие инструкции помогут вам это сделать. Полная версия
данной
части
упражнения
находится
в
файле
p0001b.htm.
Лучший метод для внедрения VBScript

Откройте созданный в прошлой части документ и удалите строки, которые вы
только что добавили:
<SCRIPT FOR="cmdClickMe" EVENT="onClick" LANGUAGE="VBSCRIPT">
MsgBox "Добро пожаловать на мою страницу!"
</SCRIPT>

Измените документ, добавив выделенные строки, показанные ниже:
<HTML>
<HEAD>
<TITLE>Работа в VBScript: Упражнение 1</TITLE>
<SCRIPT LANGUAGE="VBSCRIPT">
<!-Sub cmdClickMe_onclick()
MsgBox "Добро пожаловать на мою страницу!"
End Sub
-->
</SCRIPT>
</HEAD>
<BODY>
<H1>Пример работы в VBScript</H1>
<P>Это первое упражнение по работе в VBScript. Нажмите
на кнопку для получения сообщения.</P>
<FORM name="frmExercise1">
<INPUT TYPE="Button" Name="cmdClickMe" VALUE="Нажми меня">
</FORM>
</HEAD>
</HTML>
Сохраните файл и загрузите его в Internet Explorer. Когда вы щелкните на кнопке
Нажми меня, результат будет тем же, что и раньше.
Как это работает
В данном случае раздел сценария начинается с того же тега <SCRIPT>. В чентре этого
сценария есть три строки, "оживляющие" нашу страницу. Первая строка объявляет
проседуру под названием cmdClickMe_onClick (так мы назвали кнопку Click Me).
Процедуры такого типа известны как программы обработки событий. Событием в
данном случае является "нажатие" кнопки пользователем. Программа обработки
данного
события
будет
выполнятся
при
каждом
нажатии
этой
кнопки.
Sub
cmdClickMe_OnClick
Во второй строке мы увидим уже знакомую функцию MsgBox. Третья строка
определяет
конец
процедуры.
Не останавливайтесь сейчас надолго на деталях, вы еще увидите их в дальнейших
примерах.
Резюме
5
Вот вы и создали свою первую страничку, в которую внедрили сценарий на языке
VBScript. За время ее создания вы узнали:



как добавлять сценарий на страницу;
какие есть способы для создания страниц, на которых HTML и VBScript работают
вместе;
как вы можете располагать модули VBScript внутри комментариев на странице.
На следующем уроке вы узнаете, как работать в VBScript с переменными.
Урок 2. Работа с переменными
Переменная -- это помеченная область в компьютерной памяти, которую вы можете
использовать для сохранения данных во время выполнения сценария. Вы можете
исползовать переменные для :



сохранения введенной пользователем информации;
сохранения данных, возвращенных функциями;
сохранени ярезультатов вычислений;
Объявление переменных
Есть два метода задания переменных в VBScript, явный и неявный. Обычно переменные
задаются явно, с помощью оператора Dim:
Dim Name
Эта конструкция задает переменную Name. Вы также можете задать несколько
переменных в одной строке, как это показано ниже, но лучше каждую переменную
объявить отдельно.
Dim Name, Address, City, State
Переменные могут быть заданы неявно, просто появлением имени переменной внутри
сценария. Это не рекомендуется, так как приводит к возможным ошибкам и делае
сценарий более сложным для отладки.
Вы можете сделать так, чтобы интерпритатор требовал явного задания переменных с
помощью конструкции Option Explicit в начале сценария. Любая переменная, не
заданная явно,будет интерпритирована как ошибочная.
Правила для названия переменных
При выборе названия для переменно используйте следующие правила:




оно должно начинаться с буквы;
оно не должно содержать пробелов;
оно должно быть уникальным внутри своей сферы влияния. О сферах влияния
будеи сказано позже в этом уроке;
оно не должно содержать больше 255 символов;
Варианты и подтипы
В VBScript есть лишь один тип данных, названный вариантом. Варианты могут хранить
данные различного типа. Типы данных, которые могут сохранятся в варианте,
6
называются подтипами. В таблице ниже описаны подтипы, поддерживаемые VBScript.
Подтип
Описание
Boolean
True или False
Byte
Целое число от 0 до 255
Currency
Денежные значения
Date
Дата и время
Double
Вещественное число двойной точности
Empty
Значение, хранимое вариантом до передачи ему данных
Error
Номер ошибки
Integer
Длинное целое от -32768 до 32767
Long
Крайне длинное целое от -2147483648 до 2147483647
Null
Неинтерпритируемые данные
Object
Объекты
Single
Вещественное обычной точности
String
Строковая переменная
Присваивание значений
Присвоить значение переменной вы можете с помощью следующей конструкции:
Имя_переменной = значение
Например:
Name = "Larry Laffer"
HoursWorked = 50
OverTime = True
Сферы влияния переменных
Сфера влияния переменных определяет, где переменная может быть испоьзована в
сценарии. Сфера влияния переменной определяется местом ее объявления. Если
переменная объявлена внутри процедуры, она называется внутренней переменной
процедуры и может быть использована только внутри процедуры. Если переменная
объявлена вне процедур, она становится глобальной и может быть вызвана и
использована
в
любом
месте
сценария.
Следующий пример показывает объявление переменных обоих видов:
<SCRIPT>
Dim counter
Sub cmdButton_onClick()
Dim Temp
End Sub
</SCRIPT>
Переменная counter -- глобальная переменная. Она может использоваться в течение
всей работы сценария. Переменная temp существует лишь внутри процедуры
cmdButton_onClick.
7
Константы
VBScript поддерживает массивы. Объявляется массив с помощью операнда Dim, так же,
как и переменные.
Dim States(50)
Эта конструкция создает массив, содержащий 51 элемент. Почему 51, спросите вы.
Ответ состоит в том, что все массивы в VBScript начинаются с нулевого элемента, а
число
в
скобках
определяет
номер
последнего
элемента
массива.
Значения элементам массива присваиваются также, как любым другим переменным, но
за именим массивав скобках должен стоять номер элемента:
States(5) = "California"
States(6) = "New York"
Массив может быть многомерным -- VBScript подднрживает до 60 измерений. Ниже
показано задание двухмерного массива для хранения названий 51 штата и, например
их столиц:
Dim States(50,1)
Теперь для присваивания значений внутри массива вы должны воспользоваться
номерами по обоим измерениям:
States (6, 0) = "New York"
States (6, 1) = "Michigan"
VBScript также поддерживает динамические массивы - массивы, размер которых может
изменяться по ходу сценария. Такие массивы задаются без указания размера в
скобках:
Dim Customers( )
Для изменения размера массива используется конструкция ReDim
ReDim Customers (100)
Размер массива может изменяться неограниченное количество раз. Для сохранения
информации, которая в нем уже есть, используется ключевое слово Preserve.
ReDim Preserve Customers (100)
Второе упражнение по языку VBScript
В этом упражнении мы создадаим страницу, на которой производится простое
вычисление на основе цен на продукцию, ее колличества и комиссионных. При этом вы
узнаете больше об использовании переменных в VBScript. В этом упражнении вы
создадите документ HTML, содержащий сценарий, который получит информацию от
пользователя, осуществит на ее основе вычисления и выдаст на страницу результат.
Полная версия этой части упражнения находится в файле p0002а.htm.
Создание документа

Откройте текстовый редактор и вставьте следующий код HTML:
8
<HTML>
<HEAD>
<TITLE>Работа в VBScript: Упражнение 2</TITLE>
</HEAD>
<BODY>
<H1>Ваше второе упражнение по VBScript</H1>
<P>Переменные могут использоваться, чтобы сохранять и управлять значениями.
Просмотреть демонстрацию этого можно введя количество и цену единицы товара
в поля ниже и нажав кнопку "Вычислть стоимость". </P>
<FORM NAME="frmExercise2">
<TABLE>
<TR>
<TD><B>Колличество:</B></TD>
<TD><INPUT TYPE="Text" NAME="txtQuantity" SIZE=5></TD>
</TR>
<TR>
<TD><B>Цена устройства:</B></TD>
<TD><INPUT TYPE="Text" NAME="txtUnitPrice" SIZE=5></TD>
</TR>
</TABLE>
<BR>
<INPUT TYPE="Button" NAME="cmdCalculate" VALUE="Вычислить стоимость">
</FORM>
</BODY>
</HTML>

Сохраните файл и загрузите его в Internet Explorer. Результат будет таким.
В этой части добавим сценарий, для того чтобы "нажатие" кнопки Вычислить стоимость
приводило к ее вычислениям. Полная версия новой части упражнения находится в
файле p0002b.htm.
Добавление VBScript

Вновь откройте созданный документ. Измените его, добавив выделенные строки.
Заметим что апострофы ( ' ) обозначают комментарий, а знак ( _ ) на конце строки
обозначает, что следующая строка будет продолжена текущей.
<HTML>
<HEAD>
<TITLE>Работа с VBScript: Упражнение 2</TITLE>
<SCRIPT LANGUAGE="VBScript">
<!--Эта инструкция добавляется для броузеров, не понимающих модули VBScript.
Option Explicit
Sub cmdCalculate_OnClick()
Dim AmountofTax
Dim CRLF
Dim Message
Dim Subtotal
Dim TABSPACE
Dim TAX_RATE
Dim TotalCost
'Присваивание значений константам
TAX_RATE = 0.06
CRLF = Chr(13) & Chr(10)
TABSPACE = Chr(9)
'Вычисления
Subtotal = document.frmExercise2.txtQuantity.value _
* Document.frmExercise2.txtUnitPrice.value
AmountofTax = Subtotal * TAX_RATE
TotalCost = Subtotal + AmountofTax
9
'Отражение результатов.
Message = "Общее количество для вашего ввода:"
Message = Message & CRLF & CRLF
Message = Message & "Промежуточная сумма:" & TABSPACE & "$" & Subtotal & CRLF
Message = Message & "Налог:" & TABSPACE & "$" & AmountofTax & CRLF
Message = Message & "Итого:" & TABSPACE & "$" & TotalCost
MsgBox Message,,"Итог"
End Sub
-->
</SCRIPT>
</HEAD>
<BODY>
<H1>Ваше второе упражнение по VBScript</H1>
<P>Переменные могут использоваться, чтобы сохранять и управлять значениями.
Просмотреть демонстрацию этого можно введя количество и цену единицы товара
в поля ниже и нажав кнопку "Вычислть стоимость". </P>
<FORM NAME="frmExercise2">
<TABLE>
<TR>
<TD><B>Колличество:</B></TD>
<TD><INPUT TYPE="Text" NAME="txtQuantity" SIZE=5></TD>
</TR>
<TR>
<TD><B>Цена устройства:</B></TD>
<TD><INPUT TYPE="Text" NAME="txtUnitPrice" SIZE=5></TD>
</TR>
</TABLE>
<BR>
<INPUT TYPE="Button" NAME="cmdCalculate" VALUE="Вычислить стоимость">
</FORM>
</BODY>
</HTML>

Сохраните файл и загрузите его в Internet Explorer. Введите 100 в поле
Колличество и 10 -- в поле Цена устройства. Щелкните на кнопке Вычислить
стоимость. Результат будет таким.
Как это работает
Сразу видно, что этот сценарий намного более запутан, чем в Упражнении 1. Не
бойтесь его размера. Как и в предыдущем уроке, мы пройдем его шаг за шагом.
После открывающего тега <SCRIPT> и комментария HTML выувидете такую строку:
Option Explicit
Помните, что это значит? Эта конструкция обязывает вас объявлятьзаранее все
переменные.
Дальше мо создаем процедуру для обработки события OnClick на кнопке
cmdCalculate.
Sub cmdCalculate_OnClick
Затем мы объявляем семь переменных, три из которых мы используе как константы.
Последние можно отличить: они записаны заглавными буквами. В VBScript регистр не
имеет значения (в отличии от JavaScript и XML). Мы используем смену регистра для
упрощения чтения. Какие это переменные, внутренние или глобальные? Внутренние,
так как они объявлены внутри процедуры.
В VBScript все, что следует за апострофом до конца строки, является комментарием и
игнорируется при интерпритации сценария. Комментарии могут занимать всю строку
или ее часть. Последние обычно используются для объяснения, что происходит только
на данной строке.
' Присваивание значений константам
В следующих строках константам передаются значения. Chr ( ) -- это встроенная
функция VBScript, возвращающая символ, имеющий заданный код ASCII. Коды13, 10 и
9 обозначают, соответственно, возврат коретки, переход на новую строку и табуляцию.
CRLF = Chr(13) & Chr(10)
10
TABSPACE = Chr(9)
Следующая строка показывает , как данные передаются из формы в сценарий и как
затем обрабатываются. Два поля нашей формы названы txtQuantity и txtUnitPrice .
Форму мы назвали frmExercise2 . Здесь мы обращаемся к нашему документу, затем к
форме, далее к текстовому полю и, наконец, к его значению value . Value содержит то,
что пользователь вводит в данное поле на странице. Знак * обозначает, что
необходимо перемножить значение одного поля на значение другого.
ПРИМЕЧАНИЕ.
Обычно используемые операнды VBScript: + для сложения, - для
вычитания, * для перемножения и / для деления.
Результат этого вычисления будет сохранен в переменной Subtotal. Дальше мы
выполняем некоторые дополнительные вычисления. И, наконец, результат этих
вычислений показывается в диалоговом окне, созданным с помощью функции MsgBox.
Знак
&
используется
для
связывания
двух
строковых
переменных.
Как и на предыдущем уроке, не зацикливайтесь на деталях. Со временем вы все
поймете.
Резюме
Вот и закончилось упражнение 2. Вы создали WEB-страницу, которая взаимодействует
с пользователем, получая от него данные, выполняя вычисления и возвращая ему
результат, то есть делает то, что и большинство приложений. Вы узнали:




типы переменных, поддерживаемых VBScript;
как задавать и использовать переменные в сценарии;
как компенсировать отсутствие констант в VBScript;
как вставлять комментарий в VBScript;
На следующем уроке мы рассмотрим объекты. Вы узнаете, что это такое и как они
используются в VBScript.
Урок 3. Объекты и VBScript
Объекты, будь то апплеты Java или элементы управления ActiveX, расширяют
возможности HTML. Используя VBScript, вы можете работать с этими объектами,
объединяя их и управляя их свойствами с помощью сценария. На этом уроке мы
рассмотрим, как вы можете использовать возможности объектов с помощью VBScript.
Работа с объектом в сценарии включает две стадии:


добавление объекта на страницу;
написание программы обработки событий, связанных с данным объектом.
Добавление объектов на страницу
Это учебник по VBScript, а не по HTML, та кчто мы опишем этот процесс очень кратко.
Объекты добавляются на страницу с помощью тега <OBJECT>. Свойства
илихарактеристики объекта задаются в теге <PARAM>. Обычно мы можем увидеть в
коде страницы теги <OBJECT> и </OBJECT>, в которые заключены несколько тегов
<PARAM>, например:
<OBJECT id="lblTotalPay" WIDTH=45 HEIGHT=24
CLASSID="CLSID:978CE23 - D4B0 - 11CE - BF2D - 00AA003F40D0">
<PARAM NAME="ForeColor" VALUE="0">
<PARAM NAME="BackColor" VALUE="16777215">
11
<PARAM
<PARAM
<PARAM
<PARAM
<PARAM
<PARAM
<PARAM
</OBJECT>
NAME="Caption" VALUE=" ">
NAME="Size" VALUE="1582;635">
NAME="SpecialEffect" VALUE="2">
NAME="FontHeight" VALUE="200">
NAME="FontCharSet" VALUE="0">
NAME="FontPitchAndFamily" VALUE="2">
NAME="FontWeight" VALUE="0">
Связывание кода на VBScript с объектами
После того как вы добавили элемент управления на страницу, вы можете изменять его
конфигурацию, управлять им и обращаться к его содержимому с помощью его свойств,
методов и событий. Свойства -- это характеристики объекта. Это может быть надпись
на нем, цвет фона, размер шрифта и многое другое. Методы позволябтобъекту
выполнять задачу. События -- это действия, которые "понимает" данный объект.
например, кнопка понимает щелчок на ней -- событие OnClick.
По большей части вы будете работать с событиями и свойствами. Ниже приведен
пример установки свойств для элемента управления label.
<SCRIPT LANGUAGE="VBScript">
Sub cmdCalculatePay_onClick()
Dim HoursWorked
Dim PayRate
Dim TotalPay
HoursWorked = InputBox("Введите часы работы: ")
PayRate = InputBox("введите тариф: ")
TotalPay = HoursWorked * PayRate
lblTotallPay.caption = TotalPay
End Sub
</SCRIPT>
Свойству caption этого объекта присваивается значение, равное результату
вычисления
в
строке
сценария:
document.frmPayRate.lblTotalPay.caption
=
TotalPay
Свойства объекта доступны с помощью такогоже синтаксиса, как и в упражнении 2.
Третье упражнение по VBScript
В третьем упражнении мы усовершенствуем страницу, созданную в упражнении 2.
После этого мы сможем показывать результаты не в диалоговом окне VBScript, а с
помощью элементов управления VBScript, являющихся частью страницы. Следуйте
инструкциям, для того чтобы научитьс яработать с объектами ActiveX средствами
VBScript.
Упражнение 3: работа с объектами
В этом упражнении вы создадите документ HTML, содержащий сценарий, который
получает данные со страницы, делает с ними вычисления и возвращает результат
обратно на страницу.
Исследование документа HTML

загрузите файл p0003a.txt в текстовый редактор. Это часть страницы,
содержащая только HTML, уже созданная для вас. Этот документ содержит три
элемента управления ActiveX типа label, которые нызваны lblSubtotal, lblTaxes
и lblTotalCost. Сохраните файл под другим именем. Мы будем изменять
исходный текст, так что лучше это делать с копией.
12

Заргузите файл в Internet Explorer(сохранив с расширением .HTM) . Результат
будет таким. Вы, наверное, уже поняли, что после щелчка на кнопке ничего не
произойдет. Теперь, как и в предыдущих упражнениях, добавим сценарий.
Добавление VBScript

Дополним документ выделенными строками сценария.
<HTML>
<HEAD>
<TITLE>Работа в VBScript: Упражнение 3</TITLE>
<SCRIPT LANGUAGE="VBScript">
<!--Эта инструкция добавляется для броузеров, не понимающих модули VBScript.
Option Explicit
Sub cmdCalculate_OnClick()
Dim AmountofTax
Dim Subtotal
Dim TAX_RATE
Dim TotalCost
'Определяем константы
TAX_RATE = 0.06
'Устанавливаем порядок расчета
Subtotal = document.frmExercise3.txtQuantity.value _
* document.frmExercise3.txtUnitPrice.value
AmountofTax = Subtotal * TAX_RATE
TotalCost = Subtotal + AmountofTax
'Отображение результатов.
document.frmExercise3.lblSubtotal.value = Subtotal
document.frmExercise3.lblTaxes.value = AmountofTax
document.frmExercise3.lblTotalCost.value = TotalCost
End Sub
-->
</SCRIPT>
</HEAD>
...

Сохраните файл и заргузите его в Internet Explorer. Введите 100 в поле
Количество и 10 в поле Стоимость изделия.
Как это работает
Упражнение 3 -- всего лишь модификация упражнения 2. Так что мы сосредоточимся на
отличиях,
вместо
того
чтобы
снова
комментировать
каждую
строчку.
Минимальные изменения коснулись раздела, где объявляются и задаются переменные.
Нам не нужно так много переменных и консант в данном примере, так что лишние
просто убраны.
Dim
Dim
Dim
Dim
AmountofTax
Subtotal
TAX_RATE
TotalCost
'Определяем константы
TAX_RATE = 0.06
Метод вычислений предварительного итога , комиссионных и окончательного итога
одинаков для обоих примеров, так что не будем на нем останавливаться.
Новая страница отличается способом вывода результата. Сценарий был изменен: была
13
удалена функция MsgBox , а на ее место мы поместилисвойства caption трех
элементов управления.
'Отображение результатов.
document.frmExercise3.lblSubtotal.value = Subtotal
document.frmExercise3.lblTaxes.value = AmountofTax
document.frmExercise3.lblTotalCost.value = TotalCost
Для обращения к нужным свойствам необходимо пройти несколько "ступеней".
document
Наш Web-документ
frmExercise3
Форма, в которой находится искомый элемент ActiveX
lblTaxes
Название элемента управления
value
Свойство, которое устанавливаем
Хочется верить, что теперь вам стало проще понимать VBScript и работать с ним.
Лучшим способом закрепить эти умения будет взять несколько примеров из первых
уроков и переделать так, чтобы они выполняли ваши собственные задачи.
Резюме
Вот и третий урок позади. Понятно, что объекты -- слишком большая тема для такого
маленького урока. С другой стороны, его целью было лишь познакомить вас с
объектамии показать общие моменты в использовании с помощью VBScript.
Вы узнали:


что такое объекты и как они могут быть использованы с помощью VBScript;
о свойствах, методах и событиях.
Следующий урок посвящен циклам и условным переходам.
Урок 4. Управляющие операторы VBScript
VBScript позволяет управлять процессом обработки данных с помощью условных
переходов и циклов. С помощью условных выражений вы можете разветвлять
сценарий, используя критерий для определения, какую задачу выполнять. Циклы
позволяют ваммногократно повторять однотипные действия. И те, и другие помогают
создать более сложные и функциональные страницы.
Условные выражения
В VBScript есть две формы условных выражений:


If ... Then ... Else
Select ... Case
14
If ... Then ... Else
Это выражение используется для проверки условия, которое может оказаться истиным
или ложным, и затем, в зависимости от результата сравнения, для выполнения одной
или нескольких строк кода. Вместо того чтобы рассуждать о теоретических
возможностях блока If, мы проанализируем несколько примеров.
Самый простой способ использования блока If выглядит так:
If AmountPurchased >10000 Then DiscountAmount = AmountPurchased * .10
В этом премере условие таково:
If AmountPurchased >10000
В нем просто сравнивается с 10 000 значение переменной (объем покупок). Если объем
покупок больше 10 000, условие выполняется. В этом случае выполняется выражение,
находящееся в той же строке: DiscountAmount = AmountPurchased * .10
Теперь рассмотрим более сложную версию этой конструкции. Здесь мы можем
выполнить несколько действий подряд в случае выполнения условия:
If AmountPurchased >10000 Then
DiscountAmount = AmountPurchased * .10
Subtotal=AmountPurchased - DiscountAmount
End If
В такой форме этой конструкции в случае выполнения условия могут быть выполнены
одно или несколько выражений. Для этого нужные выражения помещают между
операторами Then и End If.
Следующей формой конструкции является формат If ... Then ... Else. Эта форма
отличается тем, что в случае истинности условного выражения выполняется один блок
кода, в случае, если оно ложно, -- другой блок.
If AmountPurchased >10000 Then
DiscountAmount = AmountPurchased * .10
Subtotal=AmountPurchased - DiscountAmount
Else
HandlingFee = AmountPurchased * .3
Subtotal=AmountPurchased + HandlingFee
End If
В этом примере, когда условие выполнено, т.е. стоимость покупки больше $10 000,
покупатель получает скидку 10%. Если меньше -- скидка заменяется на 3%
комиссионных.
И последняя конструкция функции If -- конструкция If ... Then ... Else If. В этой
форме проверяются все условия либо до тех пор, пока не будет найдено выполненное,
либо до выражения Else.
If AmountPurchased >10000 Then
DiscountAmount = AmountPurchased * .10
Subtotal=AmountPurchased - DiscountAmount
Else
If AmountPurchased >5000 Then
DiscountAmount = AmountPurchased * .05
Subtotal=AmountPurchased - DiscountAmount
Else
HandlingFee = AmountPurchased * .3
Subtotal=AmountPurchased + HandlingFee
End If
15
В этом примере покупатель получает скидку 10% ну покупку стоимостью свыше $10
000, 5% -- на покупку стоимостью свыше $5000, или с него удерживаются
комиссионные в размере 3% во всех остальных случаях.
Как можно заметить, VBScript дает вам много возможностей для построения блока If.
Select ... Case
Конструкция Select Case является альтернативной блоку If ... Then ... Else, когда
появляются сложные условия. Она хорошо подходит для ситуации, в которой есть
несколько возможных значений для проверяемого условия. Так же, как и предыдущая,
конструкция Select Case проверяетусловие на основе результата выполняет серию
действий.
Синтаксис выглядит так:
Select Case условие
Case значение
Case значение
...
Case Else
End Select
Например, слудующий блок присваивает различные почтовые издержки в зависимости
от штата, в который будет послан продукт:
Select Case Document.frmOrder.txtState.Value
Case "California"
ShippingFee = .04
Case "Florida"
ShippingFee = .03
Case Else
ShippingFee = .02
End Select
Такая конструкция проверяет каждое из условий Case до тех пор , пока не найдет
выполненное условие. Если такого условия не будет найдено, будут выполнены
выражения , находящиеся в Case Else.
СОВЕТ
Даже если это не является необходимым, в конструкцию Select Case всегда
включайте блок Case Else для обработки условий, которые вам могут казаться
невозможными. Для таких условий просто включите функцию Message Box, которая
выдаст сообщение о том, что происходит что-то непредвиденное.
Операторы цикла
VBScript поддерживае четыре формы циклов:




For ... Next
For Each ... Next
Do ... Loop
While ... WEnd.
Эти четыре выражения могут быть разделены на две группы. Конструкции с оператором
For лучше всего использовать, когда вы хотите проделать некоторые действия
определенное количество раз. Конструкции, содержащие While, лучше всего
использовать для неограниченного количества повторений.
16
For ... Next
Эта структура применяется, когда нужно повторить действия определенное количество
раз. в нем используется переменная - счетчик циклов, которая увеличивается или
уменьшается с каждым новым циклом. В следующем примере показывается простой
цикл For:
For counter = 1 to 12
result = 5 * counter
MsgBox counter & " пять раз будет " & result
Next counter
Переменная counter имеет числовое значение , которое увеличивается или
уменьшается. Число 1 определяет его начальное значение, 12 - конечное значение,
шаг по умолчанию равен 1. Когда этот цикл завершиться , появится 12 окон
сообщения, в которых будет написана таблица умножения на 5 чисел от 1 до 12.
В данном примере переменная counter увеличивается на 1 в конце каждого цикла.
Заданием необязательного параметра Step мы можем изменить эту величину:
For counter = 1 to 12 Step 2
result = 5 * counter
MsgBox counter & " пять раз будет " & result
Next counter
Таким образом, слегка изменив код, мы получим результаты перемножения лишь
некоторых чисел из данного диапазона. Можно осуществить и цикл с обратным счетом,
изменив параметр Step:
For counter = 12 to 1 Step -1
result = 5 * counter
MsgBox counter & " пять раз будет " & result
Next counter
Заметим, что в цикле с обратным счетом конечный номер меньше начального.
For Each ... Next
Эта конструкция похожа на предыдущую, отличаясь тем, что вместо заданного
количества повторений цикл обрабатывает каждый элемент массива или коллекции.
Do ... Loop
Этот тип цикла повторяет выполнение выбранного блока кода до выполнения
заданного условия. Обычно при использовании такой структуры проверяемое условие - результат операции, выполняемой внутри цикла. Два типа этой структуры приведены
далее. Это Do ... While и Do ... Until.
Do ... While
Цикл Do, содержащий ключевое слово While, выполняется до тех пор, пока
проверяемое условие истино. Вы можете проверять это условие в начале цикла.
Do While условие
выражение
выражение
... ...
Loop
17
Или в конце цикла, как показано ниже:
Do
выражение
выражение
... ...
Loop While условие
Разница между этими способами заключается в том, что первый может никогда не
выполнить содержащиеся в нем команды, а второй выполнит их как минимум один раз.
Do ... Until
Цикл Do, содержащий ключевое слово Until, выполняется до тех пор, пока
проверяемое условие ложно. Как и в структуре Do ... While, вы можете поставить
условие в начале цикла:
Do Until условие
выражение
выражение
... ...
Loop
Или в конце цикла, как показано ниже:
Do
выражение
выражение
... ...
Loop Until условие
Пример использования цикла Do ... Loop:
password = InputBox("Введите ваш пароль")
Do Until possword = "No Pasaran"
MsgBox "Неправильно введенный пароль. Попробуйте еще раз!"
password = InputBox("Введите ваш пароль")
Loop
В этом примере мы требуем ввести пароль перед выполнением условной части цикла в
первый раз. Результат будет таким: если правильный пароль будет введен сразу, цикл
не будет выполнен ни разу. Если пользователь введет неверный пароль, будут
выполнены действия, указанные внутри цикла, то есть будет выдано сообщение и
пользователю будет приедложен снова ввести пароль.
While ... WEnd
Cтруктура While ... WEnd выполняет цикл до тех пор, пока проверяемое условие
верно. Если это так, она работает похоже на Do ... Loop, хотя и без ее гибкости.
Синтаксис структуры такой:
While условие
выражение
выражение
...
WEnd
Четвертое упражнение по VBScript
18
В этом упражнении мы продолжим усовершенствование нашей страницы. Новые
особенности, с которыми мы столкнемся в этом упражнении, такие:



выпадающий список, в котором пользователь может выбрать товар;
автоматическое назначение цены при выборе;
вычисление размера скидок на основе стоимости покупки;
Упражнение 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
19
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
20
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, есть две новых особенности: автоматическое
присваивание цены и вычисление сидок. Мы рассмотрим каждую из них в отдельности.
Просмотр товаров
21
Это
новшество
созданно
с
помощью
программы
обработки
события
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?
Резюме
22
Прогресс налицо. Эта страница получает данные от пользователя, обрабатывает их,
делает необходимые проверки и возвращает пользователю результат -- и все без
передачи данных на сервер и обратно.
В этом разделе вы познакомились:


с условными выражениями, которые позволяют избирательно выполнять вам
блоки кода;
конструкциями циклов, которые дают возможность многократно выполнять
однотипные действия при условии выполнения заданного требования.
Теперь, когда мы умеем вводить, обрабатывать и отображать данные, пришло время
узнать, как проверять правильность данных перед посылкой на сервер.
P.S. Домашнее задание: выясните как работает справка.
Урок 5. Использование VBScript при создании форм
Поскольку возрастает интнерес к формам на Web-страницах, появляется необходимость
в проверке правильности данных перед их отправкой броузером клиента на сервер.
Как язык сценария VBScript хорошо приспособлен для решения этой задачи. После того
как заполнена и проверена, отправить данные может тот же самый сценарий. На этом
уроке мы рассмотрим процессы проверки и отправки данных.
Проверка содержимого ваших форм
Этот процесс заключаетсч в проверке того, что:


введены все требуемые данные;
все данные введены правильно.
Написание сценария, осуществляющего такую проверку, однообразно и утомительно,
но позволяет избавиться от ошибок при передаче данных.
Пример такой проверки, который мы будем исследовать, не задействует ничего нового
из средст VBScript. Мы просто использовали элементы, изученные в предыдущих
уроках, и соединили их новым способом. Перед тем как идти дальше, вы можете
посчитать для себя полезным поразмышлять самостоятельно, как это все можно сделать
с помощью уже знакомых средств VBScript.
Уже подумали? Теперь рассмотрим пример, для того чтобы показать вам, что можно
сделать для проверки содержимого форм.
Проверка вводимой информации
Этот пример на удивление прост. В нем есть единственное поле, куда пользователь
может ввести свой возраст и кнопку, используемую для отправки данных на сервер.
<HTML>
<HEAD>
<TITLE>Упражнение по VBScript: 5</TITLE>
<SCRIPT LANGUAGE="VBScript">
<!--Это сделано для броузеров, которые не понимают
Option Explicit
Sub cmdSubmit_OnClick()
'Проверяем, введена ли информация пользователем.
23
If (Len(document.frmExample5a.txtAge.value) = 0) Then
MsgBox "Перед отправкой вы долны ввести свой возраст."
Exit Sub
End If
'Проверка того, является ли введенная информация числом.
If (Not(IsNumeric(document.frmExample5a.txtAge.value))) Then
MsgBox "В поле возраста необходимо ввести число."
Exit Sub
End If
'Проверяем, правильно ли введен возраст.
If (document.frmExample5a.txtAge.value < 0) Or _
(document.frmExample5a.txtAge.value > 100) Then
MsgBox "Вы ввели неверный возраст (столько не живут)."
Exit Sub
End If
'Если данные корректны, то отправляем их.
MsgBox "Возраст введен верно. Спасибо."
document.frmExample5a.submit
End Sub
-->
</SCRIPT>
</HEAD>
<BODY>
<H1>Проверка вводимой информации</H1>
<P>Это упражнение демонстрирует технологию VBScript.</P>
<FORM NAME="frmExample5a">
<TABLE>
<TR>
<TD>Введите свой возраст:</TD>
<TD><INPUT TYPE="Text" NAME="txtAge" SIZE=2></TD>
</TR>
<TR>
<TD><INPUT TYPE="Button" NAME="cmdSubmit" VALUE="Отослать"></TD>
<TD></TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
Как это работает
Основная часть этого сценария -- это программа обработки события OnClick кнопки
отправки cmdSubmit. Начинае мы с проверки, ввел ли пользователь вообще что-нибуть
в поле, с помощью встроенной функции VBScript Len. Эта функция возвращает длину
указанной строки. Ели эта длина равна 0, данные не корректны. Мы сообщаем об этом
пользователю и выходим из роцедуры отправки с помощью выражения Exit Sub:
'Проверяем, введена ли информация пользователем.
If (Len(document.frmExample5a.txtAge.value) = 0) Then
MsgBox "Перед отправкой вы долны ввести свой возраст."
Exit Sub
End If
Дальше мыпроверяем, является ли эта информация числом. Встроенная функция
VBScript IsNumeric возвращает значение true, если проверяемое значение -- числовая
величина. Если нет, мы говорим об этом пользователю и выходим из программы:
24
'Проверка того, является ли введенная информация числом.
If (Not(IsNumeric(document.frmExample5a.txtAge.value))) Then
MsgBox "В поле возраста необходимо ввести число."
Exit Sub
End If
Последняя проверка заключается в отсеве значений, больших 100 и меньших 0.
'Проверяем, правильно ли введен возраст.
If (document.frmExample5a.txtAge.value < 0) Or _
(document.frmExample5a.txtAge.value > 100) Then
MsgBox "Вы ввели неверный возраст (столько не живут)."
Exit Sub
End If
Вот и все. Познакомившись с этим примером, вы узнали об основных приемах для
проверки данных с использованием средств VBScript.
Отправка формы
По сравнению с проверками поцесс отправки выглядит очень простым. В нашем
примере мы использовали стандартную кнопку HTML с надписью Отослать, связанную с
проседурой обработки, которая проверяет и отсылает содержимое формы.
Код, который нужно было добавить для отправки, показан ниже:
' Если данные корректны, то отправляем их.
MsgBox "Возраст введен верно. Спасибо."
document.frmExample5a.submit
Выражение с функцией MsgBox сообщает пользователю, что введенная информация
обработанна. Затем форма отправляет на сервер с помощью метода submit объекта
form.
Пятое упражнение по VBScript
В этом упражнении мы добавляем сценарий для проверки и отправки содержимого
формы, которую мы создали на предыдущих уроках.
Упражнение 5: как проверить и отправить форму
В этом упражнении вы создадите документ HTML, который содержит сценарий,
получающий данные с Web-страницы, выполняет вычисления и выводит результаты
обратно на страницу. Кроме того, он предоставляет цены на товарыи вычисляет размер
скидок в зависимости от размера заказа. И, наконец, он проверяет данные и
отправляет заказ вам по почте.
Исследование документа HTML
Откройте файл p0005.txt в текстовом редакторе. Это весь код HTML этого упражнения.
Заметьте новую кнопку cmdSubmit, которая будет использоваться для отправки формы
по почте после проверки. Загрузите файл в Internet Explorer. При этом страница
должна выглядить так.
25
Теперь добавьте сценарий , который будет осуществлять проверку и отправку вашей
формы. Полную версию этой части упражнения вы можете найти в файле p0005a.htm.
<SCRIPT LANGUAGE="VBScript">
<!--Для работы с несовместимым броузерами
Option Explicit
Dim Cost 'Цена продукта
Dim Qty 'Количество заказанного товара
Cost=0
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
'Проводит проверку корректности перед любыми действиями. Хотя это не
'всё, что мы можем проверить, остальное можно сделать по образу и подобию.
If (Len(document.all.Edit1.value) = 0) Then
MsgBox "Вы должны ввести количество товара."
Exit Sub
End If
If (Not IsNumeric(document.all.Edit1.value)) Then
MsgBox "Вы должны ввести число."
Exit Sub
End If
If (Cost = 0) Then
MsgBox "Вы должны выбрать один из видов товара."
Exit Sub
End If
'Определение констант
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 0
Cost=0
Case 1
Cost=645
26
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
sub cmdSubmit_onClick()
'Отсылает данные на обработку
MsgBox "Все введено правильно. Отправляю."
document.frmMnt.submit
end sub
-->
</SCRIPT>
Сохраните файл и загрузите его в IE. Ничего не вводя в поле Количество, желкните
на кнопке Вычисление цены. Появится такое диалоговое окно.
Введите какую-либо букву в поле Количество, желкните на кнопке Вычисление
цены. Появится диалоговое окно.
Введите значение 10 в поле Количество и снова желкните на кнопке Вычисление
цены. На этот раз вы увидите такое диалоговое окно.
И, наконец, выберите товар из выпадающего списка. Например самый дорогой монитор
или самый большой. Последовательно нажав кнопки Вычисление цены и Отправить
данные, вы получит е такой результат.
27
Как это работает
Сценарий на этой странице состоит из двух частей. Одна из них проверят содержимое
формы, а другая отправляет форму на сервер.
Проверка формы
Проверка нашей формы делается с помощью программы обработки события нажатия
кнопки. Вы должны отметить, что этот сценарий не притендует на серьезное
приложение, это всего лишь пример того, как можно осуществить проверку данных.
Мы начинаем с проверки длины содержимого поля Количество для выяснения, ввел
ли пользователь хоть какую-нибуть информацию в это поле. Для этого лучше всего
подходит встроенная функция VBScript Len. Если выясняется, что ее длина равна 0, то
программа сообщает об этом пользователю и заканчивает работу.
Дальше мы проверяем тип содержимого поля Количество для выяснения, является ли
оно числом. Для этого используется встроенная функция VBScript IsNimeric. Кроме того,
заказ не может быть выполнен, если неизвестно, какой товар необходим, так что затем
мы проверяет содержимое выбранного элемента выпадающего списка.
Если данные прошли все проверки, то выполняются вычисления и отображается
результат.
Отправка формы
Отправка формы выполняется с помощью программы обработки события, связанной
кнопкой cmdSubmit. Когда пользователь щелкает на этой кнопке, появляется
сообщение о том, что заказ отправлен.
ПРИМЕЧАНИЕ
Обычно обе эти функции -- проверка и отправка -- выполняются
одной программой. Здесь она разделена на две для лучшего понимания.
Резюме
Вот и закончились занятия по VBScript. За это небольшое время мы рассмотрели основы
использования VBScript на Web-странице. Мы начали с простого примера, который
просто отображал окно сообщения, и построили из него приложение, которое
принимает, обрабатывает, показывает проверяет и отправляет данные. Что еще нужно?
Вместе с приложением и примерами эти уроки помогут вам при создании ваших
собственных приложений. Вы можете использовать для этого полностью или частично
примеры из книги издательства Piter-Press. Изучайте новые приемы там, где только
можно. Написание сценариев, как и любое дело, требует опыта, настойчивости и
старания.
Download