1第二章Vbscript初步本章介绍如何使用VisualBasic的Scripting版本(VBScript),它是ActiveSeverPages的缺省脚本语言。VBScript通过变量,操作符,循环,分支,函数和子例程,扩展了HTML的功能。通过在HTML网页中嵌入VBScript脚本语言,可以使静态的HTML网页成为动态网页。Vbscript介绍VBScript是MicrosoftVisualBasic的简化版本。VBScript是一种容易学习和使用的脚本语言。这意味它比BASIC语言的成熟,易上手又难于使用,因为功能较弱。编制简单的程序时,脚本语言容易使用。但简单的句法也使开发大程序变得困难。VBScript是ActiveSeverPages的缺省语言。也可以在ASP网页中使用其它脚本语言,如Jscript,Perl等等。考虑到VBScript适合初学者掌握,我们在本章的ASP例子程序都使用VBScript。客户端和服务器端编程语言VBScript既可以作为客户端编程语言,也可以作为服务器端编程语言。客户端编程语言:可以由浏览器解释执行的语言。当编制的脚本(程序)被下载到一个兼容的浏览器中时,浏览器将自动执行该脚本。客户端编程语言的优点:浏览器完成所有的工作,减轻服务器的负担。客户端程序运行起来比服务器端程序快得多。当浏览器的用户执行一个操作时,不必通过网络对其作出响应,客户端程序就可以作出响应。脚本代码必须用标记对Script和/Script标记嵌入到HTML页面中。例HTMLHEADTITLENewDocument/TITLE/HEADBODYSCRIPTLANGUAGE=VBScript!--2dimnum1‘定义变量IfIsNumeric(num1)Then‘判断是否为数字Ifnum11ornum150ThenMsgBoxnum1是1到50之外的数字!ElseMsgBoxnum1是1到50之间的数字!EndIfElseMsgBox请输入数字!Endif//--/SCRIPT/BODY/HTML客户端脚本部分的注释标记!--和//--不是必须的,但一般应该加上,因为客户端脚本由浏览器执行,若浏览器不支持该脚本语言,则浏览器将会把代码显示出来(浏览器把脚本代码本身作为HTML页面的内容输出)。VBScript的客户端脚本,只能在Microsoft的Iexplorer上运行,其他的浏览器大都不支持。VBScript也可以作为服务器端编程语言。服务器端编程语言执行站点主机上的所有操作。服务器端编程语言的优点:VBScript脚本在服务器上执行。不受浏览器的限制,网页通过网络传送给浏览器,Web浏览器收到的只是标准的HTML文件。服务器端脚本用分隔符%和%包括,或者使用ScriptRunAt=Server和/Script标记表示脚本在服务器端运行。我们在以下的讲述中创建的ASP网页,将用VBScript作为服务器端编程语言。在ActiveSeverPages中使用VBScript创建可以执行VBScript脚本的网页。需要把网页文件以后缀名.asp保存。如果不这样,文件的脚本将不会被服务器解释.例如:HTMLHEAD3TITLESimpleVBScript/TITLE/HEADBODY%FORXX=1TO10%BWelcometoUESTC!/BBr%NEXT%/BODY/HTML该脚本将把“WelcometoUESTC!”显示10次。字符对%和%的使用。它们指明脚本的开始和结束。当Web服务器看到这个特殊字符对时,把它们之间的内容作为脚本解释执行。例如,文本%FORXX=1TO10%和文本%NEXT%都是VisualBasic脚本的例子。这两行结合起来构成了一个10次的循环。变量或函数的输出符号对%=变量或函数%(可以写成Response.Write变量或函数)例:ASP网页中变量的输出:HTMLHEADTITLESimpleVBScript/TITLE/HEADBODY%FORXX=1TO10%%=XX%B:HelloMagic!/B%NEXT%/BODY/HTML表达式%=XX%的作用是显示变量XX的值。4在每个“HelloMagic!”前面有一个数字,该数字代表变量myvar的值。例:用%=和%数输出函数值。如下的ASP网页在网页顶部打印当前日期和时间:HTMLHEADTITLESimpleVBScript/TITLE/HEADBODYThispagewascreatedon:%=Now%BRHaveaniceday!/BODY/HTMLVBScript函数Now返回当前的系统日期和时间。当这个文件被Web服务器解释时,Now函数将返回服务器当前时间,并通过%=Now%显示出来。不能把没有返回值的VBScript命令放在符号对%=和%之间。否则,将会产生错误。%=FORI=1TO100%注意符号对%和%与符号对%=和%;前者用来指明脚本的开始和结束;另一个用来显示变量和函数的值。声明变量变量是计算机内存中已经命名的内存位置,该位置可以存储脚本运行时能更改的信息,在程序中,常用变量来临时存储数据。在VBScript中,变量命名必须遵循这样的规则:①变量名必须以字母开头;②变量名中不能含有句号;③变量名不能超过255个字符;④变量名不能和关键字同名;⑤变量名在被声明的作用域内必须唯一5VBScript变量不区分大小写变量的声明有两种方式隐式声明:在VBScript脚本中,使用变量前不需专门声明。例如:HTMLHEADTITLESimpleVBScript/TITLE/HEADBODY%myvar0=”HelloWorld!”%%=myvar0%/BODY/HTML在该例中,变量myvar0没有经声明而直接被分配了一个值“HelloWorld!”,并且这个值被输出到浏览器。这不会产生错误。虽然隐式声明很方便,但如果敲错了变量的名字,就会导致错误。如在程序中将myvar0(数字零)为myvaro(英文小写的o),VBScript遇到新的名字,无法确定到底是隐式声明了一个新的变量或是变量的拼写错误。只好用新名字创建一个新的变量,而这个新声明的变量的值为EMPTY所以,在编写长而复杂的程序时,最好先声明变量然后再使用,这样的脚本易于调试。如果敲错了变量的名字,将会产生错误。显式声明:下面的例子演示变量必须先声明后使用:%OPTIONEXPLICIT%HTMLHEAD6TITLESimpleVBScript/TITLE/HEADBODY%DIMmyvar0myvar0=”HelloMagic!”%%=myvar0%/BODY/HTML上例中,OPTIONEXPLICIT语句强制所有的变量必须专门声明。DIM语句声明了变量myvar0。如果不声明这个变量,将会收到错误信息:Variableisundefined:’myvar0’.用DIM语句可同时声明多个变量,只要把变量名用逗号隔开即可:DIMx1,x2,x3,x4,xya,bbc注意:OPTIONEXPLICIT语句的位置很特殊。必须把OPTIONEXPLICIT语句作为ASP网页的起始语句之一。它必须出现在任何HTML标识或其它VBScript命令之前。否则,该语句将被视为非法语句。变量子类型VBScript只有一种数据类型,即Variant类型。由于Variant类型是VBScript中唯一的数据类型,Variant类型可以在不同场合代表不同类型的数据,Variant是一种特殊的变量类型,它可以代表许多其它类型的变量。当用DIM语句声明一个变量时,不用为变量定义数据类型。VBScript中所有变量都是相同的数据类型。当给一个变量赋值时,variant型变量自动与所赋值的类型保持一致。参考如下的例子:%myvar1=”KeepCatch”%%=TYPENAME(myvar1)%7%myvar2=3%%=TYPENAME(myvar2)%变量myvar1和myvar2被分配了两个不同数据类型的值。VBScript函数TYPENAME()可以显示该变量代表的实际数据的子类型。给变量myvar1分配字符串数据“KeepCatch”时,Variant型变量的子类型是string。给变量myvar2分配整数3时,myvar2的子类型是integer。变量的数据范围不同的变量子类型可以代表的数据有不同的范围。表8.1列出了变量子类型和它们的数据范围的完整信息:表8.1变量子类型及其数据范围子类型范围Byte0到255BooleanTRUE或FALSEInteger-32,768到32,767Long-2,147,483,648到2,147,483,647Single负数:-3.402823E38到-1.401298E-45正数:1.401298E-45到3.402823E38Double负数:-1.79769313486232E308到-4.94065645841247E-324正数:4.94065645841247E-324到1.7976931348623eE308Currency-922,337,203,685,477.5808到922,337,203,685,477.5807Date1000年1月1日到9999年12月31日object任何对象的引用string变长字符串,长度从0个字符到大约20亿个字符注意string子类型的数据范围非常之大。可以把整个网页,或者甚至整部小说保存在一个字符串变量中。常用的子类型转换函数,见本章的函数部分,可用它们来转换数据的子类型:8空变量和空值变量的讨论空变量:声明一个变量后,如果还没有初始化,则该变量的值是EMPTY(为空)。这个值是自动分配的当定义了一个变量后,如果尚未给该变量赋值,那么,当该变量参与数值运算时,该变量的值作为0进行运算。当该变量参与字符串操作时,该变量被作为“”(空字符串)处理。只要将任何值(0、零长度的字符串、或NULL)赋予变量,变量的EMPTY将会消失。将变量恢复为空变量,关键字EMPTY赋予变量,如:myvar=EMPTY函数ISEMPTY()可以检测一个变量是否为空变量。如下例所示:%dimmyvar,myvar2myvar=”HelloMagic!”myvar:%=ISEMPTY(myvar)%myvar2:%=ISEMPTY(myvar2)%%在例中,检测了两个变量myvar和myvar2,看它们是否为空。因为myvar已经被分配了一个值,当把变量myvar作为函数ISEMPTY()的参数时,该函数返回FALSE。而myvar2没有分配数据,因此以myvar2为参数时,函数ISEMPTY()返回TRUE。空变量与被分配了长度为0的字符串或数字0的变量是不同的。例如,语句myvar=””和myvar=0都该变量myvar分配了一个值。在这两种情况下,该变量都不是空的。只有一个从未被赋过值的变量才是空变量。空值变量:如果将关键字NULL赋予变量,则变量不包含任何有效的数据,9如果表达式包含NULL,计算结果总是NULL,将NULL,含NULL的变量,或计算结果为NULL的表达式作为参数传递给大多数函数,将使函数返回的结果为NULL,测试方法:使用函数IsNULL()来测试。空变量与包含空值的变量是不同的。一个被分配了空值NULL的变量不是空变量,而是有值NULL。声明常量VBScript可以声明常量。常量与变量有相似之处;但是,一旦声明了一个常量,该常量的值将不能被改变。使用Const语句在VBScript中创建用户自