Cравнение VBScript и JavaScript.
Прежде чем начинать познавать VBScript, давайте сравним две одинаковые, простые программы на JS и VBS. Это будет полезным для тех, кто знает JavaScript (к коим я не отношусь
.
Суть программы: вводим текст в верхнее поле, нажимаем кнопку "Скопировать" и текст копируется в нижнее поле.
Java Script VB Script
JAVA в Web
<FORM NAME=forma>
<INPUT TYPE="text" NAME="text1"><BR>
<INPUT TYPE="text" NAME="text2"><BR>
<INPUT TYPE="button" NAME="knopka" VALUE="Скопировать" OnClick=copyfun()>
</FORM>
<SCRIPT LANGUAGE="JavaScript">
function copyfun()
{
var copytext;
copytext=document.forma.text1.value;
document.forma.text2.value=copytext;
}
</SCRIPT>
<FORM NAME=forma>
<INPUT TYPE="text" NAME="text1"><BR>
<INPUT TYPE="text" NAME="text2"><BR>
<INPUT TYPE="button" NAME="knopka" VALUE="Скопировать" OnClick=copyfun()>
</FORM>
VBS в Web
<SCRIPT LANGUAGE="VBScript">
sub copyfun
dim copytext
copytext=document.forma.text1.value
document.forma.text2.value=copytext
end sub
</SCRIPT>
Да, как видно, различий практически нет. JS поддерживает только функции, VBS и функции и процедуры (подпрограммы). Так же следует отметить, что VBS отличие от JS не чувствителен к регистру символов, т.е. для него что copyfun(), что CoPYfuN() - один пес
. Так что можете сделать выводы, тем, кто знает ява скрипт, будет легко освоить VBS, а тем кто не знает пока ни того не другого будет еще легче, поскольку переучиваться не придется. Учиться лучше на примерах, поэтому постараюсь их здесь приводить побольше. Я надеюсь, что
Вы хотя бы умеете писать программы на обыкновенном Бейсике (QB или TB)? Тогда эта статья именно для Вас.
[...]
Что такое эти процедуры? Процедура это общее название функций или подпрограмм. Имеет синтаксис:
sub name_событие ....... end sub.
name - это имя процедуры, например мы написали, что кнопка "загадать число" называется "chislo", значит подпрограмма sub chislo_onclick выполнится при нажатии на эту кнопку.
событие - то, что может "случиться" в окне броузера. Например "onclick" означает, что процедура выполнится, при нажатии на кнопку, предварительно заданную в форме (как в нашем случае). Существует несколько видов событий. Из самых распространенных можно отметить: window_onload - запускается при полной загрузке документа:
[...]
Справочная информация. Некоторые операторы и функции.
Чтобы Вам было легче экспериментировать в написании скриптов, приведем основные операторы и функции VBscript. А то начнете писать PRINT "привет" или пытаться закончить цикл For оператором Next x
СИНТАКСИС ПРИМЕР ОПИСАНИЕ
Операторы работы с массивами.
Dim имя_массива (индексы) dim a(10),b(20,30) Объявление массива
Erase имя_массива erase a Очистка содержимого массива
Операторы присваивания.
переменная = значение a=137 a=b c="привет" Присваивание
Set переменная = объект set a=document.forma1 Присваивание переменной значени ссылки на объект.
Комментарии.
' комментарии ' текст
Rem комментарии rem текст
Константы Boolean.
переменная = False if a=false then ... Значение типа boolean равное 0
переменная = True if a=true then ... Значение типа boolean равное -1
Функции.
Abs (число) a = abs(-1.34) ... a=1.34 Абсолютное значение числа
Asc (символ) a = asc("s") ... a=115 ANSI код символа
Chr (число) a = chr(115) ... a="s" Символ соответствующий коду
Fix (число) a = fix(-1.5) ... a=-1 Целое число, округление
Int (число) a = int(-1.5) ... a=-2 Целое число, округление
Hex (число) a = hex(543) ... a="21F" Шестнадцатиричное представление
Oct (число) a = oct(543) ... a="1037" Восьмеричное представление
Sgn (число) a = sgn(-1.3) ... a=-1 Знак числа
Date a = date ... a =
[...]
Операторы используемые в выражениях
Привожу просто список, надеюсь все и так ясно:
+ And / = Eqv ^ > <= Imp <> \ < => Mod * - Or & Xor
Текстовые Функции
Instr (начало, строка, искомая подстрока) If Instr(1,mail,@) then ... Возвращает номер символа в строке с которого начинается исходная подстрока
Lcase (строка) a=Lcase("ПРивЕТ") ... a="привет" Преобразование символов строки в строчные буквы
Ucase (строка) a=Ucase("ПРивЕТ") ... a="ПРИВЕТ" Преобразование символов строки в заглавные буквы
Left (строка,N символов) a=Left("Привет",3) ... a="При" Левая часть строки длинной N символов
Right (строка,N символов) a=Right("Привет",3) ... a="вет" Правая часть строки длинной N символов
Len (строка) a=Len("Привет") ... a=6 Длина строки
Ltrim (строка) a=Ltrim(" Привет ",) a="Привет " Удаляет начальные пробелы
Rtrim (строка) a=Rtrim(" Привет ",) a=" Привет" Удаляет конечные пробелы
Trim (строка) a=Ttrim(" Привет ",) a="Привет" Удаляет начальные и конечные пробелы
Mid (строка, начало, N символов) a=Mid("Привет",3,2) a="ве" Часть строки с позиции "начало" и длиной N символов
Left(строка,N символов) a=Left("Привет",3) a="При" Левая часть строки длинной N символов
Space (N) a=Space(5) Строка из N пробелов
String (N символов, символ) a=String(5,"A") a="AAAAA" Строка из N символов
Ltrim (строка) a=Ltrim(" Привет ",) a="Привет " Удаляет начальные пробелы
Ветвление и циклы
Вызов подпрограммы
Call имя_событие
...
Выполняет код хотя бы один раз, пока условие не будет истинным
Loop Until условие Do
a=a+1
Loop Until a>=5
Do
...
Выполняет код хотя бы один раз, пока условие справедливо
Loop While условие Do
a=a+1
Loop While a<5
Do Until условие
...
Повторяет выполнение кода, пока условие не станет истинным
Loop Do Until a>=5
a=a+1
Loop
Do While условие
...
Повторяет выполнение кода, пока условие справедливо
Loop Do While a<5
a=a+1
Loop
For счетчик=начало To конец Step шаг
...
Выполнение кода при выполнении условия
next For i=1 to 5
a=a+1
next Цикл
IF условие Then
действие1
Else
действие2
End if IF a>1 Then alert"больше"
Select Case X
Case значение1
действие
Case значение2
действие2
...
Выборочное выполнение кода при совпадении значения
End select Select Case X
Case 10
alert"x=10"
Case 20
alert"x=20"
End select
While условие
действие
Wend While a<5
a=a+1
Wend 'Выполнение кода пока условие истинно
Oбъявление функций и процедур
Dim переменная Dim a Объявление переменной
Sub имя_событие
код
End sub Sub but_onclick
Alert x
End sub Подпрограмма
Function имя(параметры)
код
End function Function(x,y)
x=x*y
End function Функция
Exit ... Exit Do (For, Function, Sub) Досрочный выход
[...]
Основные типы данных VBscript
Наверное, те кто знаком со "старым" бейсиком, еще помнят, что для обозначения символьной переменной надо было писать знак бакса или солнышка (a$="привет"). В VBscript этого делать не следует, он имеет только один тип данных, называемый VARIANT. Он может содержать как символы так и числа разной точности. Поэтому для того, чтобы точно определить тип данных, желательно использовать функции преобразования. К примеру, текст вводимый в поле формы имеет текстовый формат, и попытка сложить цифру "3" с цифрой "2" приведет к результату "32":
sub summa
summatext1=document.formasum.summa1.value
summatext2=document.formasum.summa2.value
alert summatext1+summatext2
end sub
Поэтому надо сделать так, чтобы переменные summatext1 и summatext2 были преобразованы в целые числа функцией Cint(переменная):
sub summa
summatext1=Cint(document.formasum.summa1.value)
summatext2=Cint(document.formasum.summa2.value)
alert summatext1+summatext2
end sub
Подтипы данных VARIANT.
ПОДТИП ФУНКЦИЯ ПРЕОБРАЗОВАНИЯ ОПИСАНИЕ
Epty - Автоматически присваивается новым переменным,
когда им еще не присвоено явное значение.
Null - Указывает на то, что переменная не содержит допустимых данных.
Boolean CBool(x) Используется для обозначения логических переменных, принимающих два допустимых значения True или False
Byte CByte(x) Самый короткий тип данных принимающий значение 0..255
Integer CInt(x) Целый тип в пределах -32768 .. 32768
Long CLng(x) Длинный тип целой переменной в пределах -2147483648 .. 2147483647
Single CSngl(x) Тип чисел с плавающей точкой одинарной точности
Double CDbl(x) Тип чисел с плавающей точкой двойной точности
Date/Time CDate(x) Число в формате отображающее время и дату от 1 января 100 года до 31 декабря 9999 года
Currency CCur(x) Специальный числовой формат для денежных величин
String CStr(x) Символьные тип данных
Object - Ссылка на объекты ole, html, ActiveX
Error - Тип данных предназначенный для хранения номеров ошибок
Некоторые правила VBscript
В заключении следует упомянуть некоторые основные приемы при написании кода скрипта.
Если код не умещается в одной строке, то можно использовать символ продолжения строки:
if a=1 and b=2 or c=3 then alert a
можно написать как
if a=1 _
and b=2 _
or c=3 _
then alert a
Для "склеивания" двух численных переменных лучше использовать знак "&" чем "+", т.е. a="при" b="вет" тогда a&b="привет"
[...]