《Vbscript初步教程 .pdf》由会员分享,可在线阅读,更多相关《Vbscript初步教程 .pdf(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章 Vbscript 初步本章介绍如何使用Visual Basic 的 Scripting版本(VBScript ) ,它是 Active SeverPages的缺省脚本语言。 VBScript 通过变量,操作符,循环,分支,函数和子例程,扩展了 HTML 的功能。通过在 HTML 网页中嵌入 VBScript 脚本语言,可以使静态的 HTML 网页成为动态网页。Vbscript介绍VBScript 是 MicrosoftVisualBasic 的简化版本。VBScript 是一种容易学习和使用的脚本语言。这意味它比BASIC语言的成熟,易上手又难于使用, 因为功能较弱。 编制简单的程序时
2、, 脚本语言容易使用。 但简单的句法也使开发大程序变得困难。VBScript 是 ActiveSever Pages的缺省语言。也可以在ASP网页中使用其它脚本语言,如 Jscript,Perl 等等。考虑到 VBScript 适合初 学者掌握 ,我们在本章的 ASP例子程序 都使用 VBScript 。客户端和服务器端编程语言VBScript 既可以作为 客户端 编程语言,也可以作为 服务器端 编程语言。客户端编程语言: 可以由浏览器解释执行 的语言。 当编制的脚本 (程序) 被下载到一个兼容的浏览器中时, 浏览器将自 动执行该 脚本。客户端 编程语言的 优点:l浏览器完 成所有的工作,减轻
3、服务器 的负担。l客户端 程序运行起来 比服务器端 程序快得多。当浏览器 的用户执行 一个操作时,不必通过网 络对其作出响应 ,客户端 程序就可以作 出响应 。l脚本代码必须 用标记对和标记嵌入到 HTML 页面中。例 New Document !-PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 38 页 - - - - - - - - - dimnum1 定义变量If IsNumeric(num1) Then 判断是否为数字Ifnu
4、m150ThenMsgBox num1 是 1 到 50之外的数字!ElseMsgBox num1 是 1 到 50之间的数字!EndIfElseMsgBox请输 入数字!End if/-客户端 脚本部分的注释标记 不是必须的,但一 般应该加 上,因为 客户端脚本由浏览器执行 ,若浏览器不 支持该脚本语言, 则浏览器将会把代码显示出来(浏览器把 脚本代码本身作为 HTML 页面的内容输出) 。VBScript 的客户端 脚本, 只能在 Microsoft的 Iexplorer上运行, 其他的浏览器 大都不支持。VBScript 也可以作为 服务器端 编程语言。 服务器端 编程语言 执行站点主机
5、 上的所有操作。服务器端 编程语言的 优点:lVBScript 脚本在 服务器 上执行。 不受浏览器 的限制, 网页通过网 络传送给浏览器 ,Web 浏览器 收到的只是标准的 HTML 文件。l服务器端 脚本用分 隔符包括,或者使用和标记表示脚本在 服务器端运行 。我们在以下的讲述中创建的 ASP网页, 将用 VBScript 作为服务器端 编程语言。在 Active Sever Pages 中使用 VBScript创建可以执行VBScript脚本的网页。需要把网页文件以后缀名 .asp保存。 如果不这样,文件的脚本 将不会被服务器解释 .例如:PDF pdfFactory Pro 名师资料总
6、结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 38 页 - - - - - - - - - Simple VBScriptWelcometo UESTC !该脚本将把“Welcometo UESTC !”显示 10 次。字符对的使用。它 们指明脚本的开 始和结束。当 Web服务器 看到这 个特殊字符对时,把它们之间 的内容作为脚本 解释执行 。例如, 文本和文本都是Visual Basic脚本的例子。这 两行结合起来 构成了一 个 10 次的循环。变量或函数的输出符号对(可以写成
7、Response.Write变量或函数)例:ASP 网页中变量的 输出: Simple VBScript: Hello Magic!表达式的作用是 显示变量XX的值。PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 38 页 - - - - - - - - - 在每个“Hello Magic! ”前面有一个数字,该数字代表变量myvar的值。例:用数输出函数值。如下的 ASP网页在网页 顶部打印当前日期 和时间: Simple VBSc
8、riptThis pagewascreatedon :Have a nice day!VBScript 函数 Now 返回当前的系统日期 和时间。当这个文件被 Web服务器解释 时,Now 函数将返回服务器当 前时间,并通过显示出来 。不能把没有返回值 的 VBScript 命令放 在符号对之间。否则,将会产生错误。注意符号对与符号对;前者用来指明脚本的开 始和结束;另一个用来显示变量和函数的 值。声明变量变量是 计算机内存中已经命名 的内存位置, 该位置可以存储脚本运行时能更改的信息,在程序中, 常用变量 来临时存储数据。在 VBScript 中,变量 命名必须遵循这样的规则:变量名必须以字
9、母开头;变量名中不能含有句号;变量名不能超过 255个字符;变量名不能和关键字同名;变量名在被声明的作用 域内必须 唯一PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 38 页 - - - - - - - - - VBScript变量不区分大小写变量的 声明有两种方式隐式声明 :在VBScript脚本中,使用变量 前不需专门声明。例如: Simple VBScript在该例中,变量myvar0没有经声明 而直接 被分配了一个值“Hel
10、lo World!”,并且这个值被输出 到浏览器 。这不会产生错误 。虽然隐 式声明 很方便,但如 果敲错了变量的 名字,就会导致 错误 。如在程序中 将myvar0(数字零)为 myvaro(英文小写的 o),VBScript 遇到新的名字,无法确定到底是隐式声明了一个新的变量 或是变量的 拼写错误 。只好用新名字创建一个新的变量 ,而这个新声明的变量的 值为 EMPTY所以, 在编写长而复杂 的程序时,最好先 声明变量然后再使用,这样的脚本易于 调试。如果敲错了变量的 名字,将会产生错误 。显式声明:下面的例子演示变量必须先声明后 使用:PDF pdfFactory Pro 名师资料总结
11、- - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 38 页 - - - - - - - - - Simple VBScript上例中,OPTION EXPLICIT 语句强制所有的变量 必须专门声明 。DIM 语句声明了变量myvar0。 如果不声明这个变量, 将会收到错误信息 :Variableis undefined: myvar0.用 DIM 语句可 同时声明多个变量, 只要把变量名用逗号隔开即可:DIM x1,x2,x3,x4,xya,bbc注意:OPTION EXPLICIT
12、语句的 位置很特殊。必须把 OPTION EXPLICIT 语句作为 ASP 网页的 起始语句之一。它 必须出 现在任何 HTML 标识或其它 VBScript 命令之前。否则,该语句将被视为非法语句。变量子类型VBScript 只有一种数 据类型,即 Variant类型。由于 Variant类型是 VBScript 中唯一的数据类型, Variant类型可以在不同场合代表不同类型的数据,Variant是一种 特殊的变量类型,它可以 代表许多其它类型的变量。当用 DIM 语句声明一个变量时, 不用为变量 定义数据类型。VBScript 中所有变量都是相同的数据类型。当给一个变量赋值时,vari
13、ant型变量自动与所赋值的类型保持一致。参考如下的例子 :PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 38 页 - - - - - - - - - 变量myvar1 和 myvar2被分配了两个不同数据类型的值。VBScript函数TYPENAME()可以显示该 变量代表的实际数据的子类型。给变量myvar1分配字符串数据“KeepCatch”时,Variant型变量的子 类型是string。给变量myvar2分配整数 3 时,m
14、yvar2的子类型是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.94065645841247
15、E-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子类型的数据范围非常之大。可以 把整个网页, 或者甚至整 部小说保存在一个字符串变量中。常用的子 类型转换 函数, 见本章的函数 部分,可用它 们来转换数据的子类型:PDF pdfFactory Pro
16、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 38 页 - - - - - - - - - 空变量和空值变量的讨论空变量:声明一个变量后,如果还没有初始化,则该变量的 值是 EMPTY (为空)。这个值是自动分配的当定义 了一个变量后,如果尚未给该变量赋值,那么,当该变量参与数值运算时, 该变量的 值作为 0 进行运算。当该变量参与字符串操作时, 该变量被作为“” (空字符串)处理。只要将任何值(0、零长度 的字符串、或 NULL )赋予变量,变量的 EMPTY 将会消
17、失。将变量恢复为空变量, 关键字 EMPTY 赋予变量,如 :myvar = EMPTY函数ISEMPTY()可以检测一个变量是 否为空变量。如 下例所示:%dim myvar, myvar2myvar=” Hello Magic!”myvar: myvar2:在例中,检测了两个变量myvar和myvar2,看它们是否为空。因为myvar已经被分配了一个值,当把变量myvar作为函数ISEMPTY()的参数时,该函数返回FALSE。而myvar2没有分配数据,因此以myvar2为参数时,函数ISEMPTY()返回TRUE。空变量与被分配了长度为 0的字符串或数字 0的变量是 不同的。 例如,
18、语句myvar=” ”和myvar=0都该变量myvar分配了一个值。在这 两种情况下,该变量都不是空的。只有一个从未被赋过值的变量 才是空变量。空值变量:如果将关键字 NULL 赋予变量,则变量不包含任何有效的数据,PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 38 页 - - - - - - - - - 如果表达式包含 NULL ,计算结果 总是 NULL ,将 NULL ,含 NULL 的变量, 或计算结果 为 NULL 的表
19、达式 作为参数传递给大多数函数, 将使函数返回的结果为 NULL,测试方法:使用函数IsNULL()来测试。空变量 与包含 空值的变量是 不同的。一 个被 分配了空值 NULL 的变量 不是空变量,而是有值 NULL 。声明常量VBScript可以声明常 量。常量与变量有相似之处;但是,一 旦声明 了一个常量,该常量的值将不能被改变。使用Const语句在 VBScript 中创建用户自定义 常数。例:在例中,常量Pi被分配了值3.14159,因为Pi是一个常量,在和 后面的脚本中 将不能给再给它分配新值,否则将会出 现错误提示。可以一 次定义多个 常量,将每个常量定义用逗号隔开。如 下:最好采
20、用一个命名方 案以区分常数和变量。这 样可以避免在运行 Script 时对常数重新赋值。例如,可以使用 “ vb” 或“ con” 作常数名的前缀,或将常数名的所有字 母大写。将常数和变量 区分开可以在开发 复杂的 Script 脚本时 避免混乱 。创建和修改数组固定数组数组是一个可以存储一组值的变量 当需要存储 一组相关的值时, 。可以 创建数组。PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 38 页 - - - - - - -
21、- - 例如:在这个例子中, DIM 语句用 来声明一个数组。与前面讨论的变量 不同,数组在使用之前必须声明。这个 DIM 语句声明了一个可以存储 11个值的数组。注意:VBScript中数组的下标从 0 开始,每个数组的元素个数都比声明语句中的数字多 1。 (用刚才讨论的数组Product,可以存储 11个值。如 果向该数组中添加超过 11个元素,将发生错误 。 )声明一个数组后,数组的每一个元素都可以使用 惟一的下标来 识别, 下标用于指明某个数组元素 在数组中的位置,例子中, 下标为 1 的数 组元素 的值是“cpu 。如果要输出该元素的值,可以用这 样的语句 :上例中数 组是一个一维数
22、组, 作用与一个列表相似。 当然, 也可以 创建有多维的数组, 。考虑如 下的二维数组:这个脚本中 DIM 语句创建了一个二维数组。这个数组的作用 类似于表,第一个下标指定行,第二个下标 指定列。PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 38 页 - - - - - - - - - 使用数 组时,并不只限 于使用 二维数组。可以 声明最大到 60 维的数组。要创建 一个多维数组,只要简单地在数组声明语句中 增加一个维数即可。例
23、如 :DIM Product(10,10,10,10)这个声明创建 了一个四维数组,每一维可以存储 11个元素。这意味 着这个数组共可以保存 14,641个数值(11*11*11*11=14.641) 。可以 看到,随着维 数的增加,数组的大小增加得很快。由于在 VBScript 中,对每个数组元素 都要分配内存空间,因此不要不切实际地声明太大的的数 组。动态数组前面接触的都是固定大小的数组。这种数 组一旦声明了一个固定大小, 那么将不能改变数 组中的 元素 个数。 要改 变一个固定数组的大 小,你必须删除 它再重新创建 。不过VBScript提过了一种动态数 组。在例子,DIM 语句把数组
24、Product声明为动态数 组。当声明一个动态数 组时,不需要指定数组的维数。但在第一次给一个动态数 组分配数值之前,必须使用 REDIM 语句指定数组的维数。数组Product首先被创建为只能有三个元素。接下来,再次使用 REDIM 语句,增大了这个数组的大小。 该数组被重定义维数以包含四个元素。 这使你可以把值“Coffee Cup保存在重定义的数组中。注意第二个 REDIM 语句中 关键字 PRESERVE的使用。 当一个数组被重设维 数时,使用关键字 PRESERVE能使该数组中的内容保留下来。如果不使用这 个关键字,数组将PDF pdfFactory Pro 名师资料总结 - - -
25、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 38 页 - - - - - - - - - 丢失所有数据,产生一个空的数组。对于多位数组,可以用 REDIM 语句增加维数,也可以 减少维数。但是, 当你删除某一维或减小某一维的大小时,数 据将会丢失。用关键字 PRESERVE,只能修改一个多维数组最后一维的大小。可以增大最后一维,不丢失数据,或减小最后一维,丢失一部分数据。当然,如果需要 增加或减少多维数组的维数,就不能使用 PRESERVE关键字,而且进 行该操作时 无法保存数组中的数 据
26、。这样可以使用 REDIM 语句扩展 或减缩一个数组任意多次。数组函数UBOUND()使用数 组时,函数 UBOUND() 返回一个数组的大 小。准确地说,返回的是数 组的某一维的大小。这里有这个函数的一 些例子:第一个 UBOUND()函数 返回值 是 10。在缺省 情况下,这个函数返回的是一 个函数的第一维的上界。第二 个 UBOUND ()函数的 返回值与 第一个相同。它返回 的是数 组Product的第一维的上界。第三个 UBOUND ()函数的 返回值 是 33。这是数 组 Product的第二维 的维数。当一个数组不是自己声明的,但编程时 需要确定数组的大小时,函数 UBOUND
27、()是非常有用的。ISARRAY ()操作数 组的一个有 用的函数是 ISARRAY () 。可以用 来测试一个变量表达式 是否是一个数组。例:PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 38 页 - - - - - - - - - 在这个例子中, 第一个 ISARRAY()函数 返回 TRUE ,因为Product实际上是一 个数组。第二个 ISARRAY()函数返回FALSE,因为变量somevar没有被声明为一个数组。ER
28、ASEVBScript的 ERASE 语句,可以用 来操作固定大小的数组和动态数 组。对静态数 组:使用 ERASE 语句, 清空数组的数据。l数组是一个字符串数组,ERASE 语句把该数组的所有元素重 新 初始化为空字符串。l数组是一个数值数组, ERASE 语句可以 把该数组的所有元素重 新初始化为 0。 如下:当这个脚本执行时,不会输出 任何信息。 ERASE 语句 清空了数组 Product的所有数据。对动态数 组:对动态数 组使用 ERASE 语句,会删除数组本身。当删除了一个数组后,内存就被释放。在重新使用这 个数组之前,必须将该 数组重新初始化。如 下例所示:脚本创建了一个Pro
29、duct的动态数 组。该数组的下标 值为 1的元素被赋值。然后,用 ERASE 语句删除了这个数组。如果在它被删除后试图访问 这个数组的任何元素,将会发生错误 。在再次使用这个数组前,必须用REDIM 重新声明该数组。对一个访问率 很高的站点来 说, 内存是非常珍贵的。 因此当一个动态数 组不再需要时,最好使用 ERASE 语句删除它。如何在 Visual Basic 脚本中添加注释在VBScript中,注释符采用西文单引号“ ” , 即以撇号作为注释的开始;或用 REM注释,可以和语句在 同一行并写在语句的 后面,也可单 独占一行。在例中, REM 和单引号都是用来建立注释的。这两种注释只
30、能用来注释 一行。用 REM 语句或撇号建立的注释在一行的末尾结束。你可以把注释 与其它 Visual Basic 语句写在同一行中: Web服务器解释 VBScript 脚本时会略过脚本的 注释,不会发送给浏览器 。PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 38 页 - - - - - - - - - 如何将单行语旬分成多行有时一条语句可能 会很长,这给打印和阅读带 来不便,此时可用 续行符“ - ”(一个空格紧跟 一个下划
31、线)将长语句分成 多行。空格VBScript运算符VBScript有一套完整的运算符,包括算 术运算符、比较运算符、连接运算符和逻辑运算符。当表达式包含 多个运 算符时,将按预定顺序计算每 一部分,这个顺序被称为运算符优先级。可以使用 括号越过这种 优先级顺序,强制首先计算表达式 的某些部分。运算时, 总是先执行括号中的运算符,然后再执行括号外的运算符。但是,在括号中仍遵循标准运算符优先级。当表达式包含 多种运算符时,首先计算算 术运算符,然后计算 比较运算符,最后计算逻辑运算符。所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。 算术运算符和逻辑运算符等的 优先级如下所示:PD
32、F pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 38 页 - - - - - - - - - 算术运算符比较运算符逻辑运算符连接运算符描述符号描述符号描述符号描述符号求幂等于=逻辑非Not字符串连接&负号-不等于逻辑与And字符串连接+乘*小于逻辑异 或Xor整除小于等于=逻辑隐含Imp加+对象引用比较Is减-连接运算符,可以将两个字符串连接起来,生成一个新的字符串,建议总是使用“&”例:%strwebsite=” 新闻网”strsch
33、ool“电子科大党委宣 传部“strtemp=strwebsite& “ 属于” strschool%使用&运算符时,参与连接的两个表达式 可以不全是字符串,即 & 能强制将两个表达式 做字符串连接,如下:PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 38 页 - - - - - - - - - %intnum =02S10078strtemp=” 您的学号是” &intnum%逻辑等价 Eqv表达式 1Eqv 表达式 2仅当两个
34、表达式相同时结果才为真(6-3) EQV(8-5)结果为真逻辑蕴涵 Imp表达式 1Imp 表达式 2仅当第一个表达式 为真时结果 才为真(98)结果为假程序流程控制VBScript的流程共有:顺序、分支、循环三种。顺序不单独讲解。IF.THEN 语句VBScript最常用的分支语句是 IF.THEN 语句。例: #5:00:00pm#then(字符用来界定日期或 时间常量) 。Greeting = ” Good Evening”endif%语句的作用是在时 间在下午五点之后,把“Good Evening“赋给变量GreetingPDF pdfFactory Pro 名师资料总结 - - -精
35、品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 38 页 - - - - - - - - - ENDIF 指定了分支 代码块的结束。也可在 END IF 前放置 多条语句。例:#5:00:00pm#thenGreeting = ” Good Evening!”Evening_Visitor=Evening_Visitor+1endif%这个例子中的 两个语句都只有 在时间是下午五点以后的情况下才执行。与 IFTHEN 搭配使用的是 ELSE 表达式 。跟在 ELSE 表达式后 的语句 只有条件为
36、false时才被执行 。请看这个例子: #5:00:00pm#thenGreeting = ” Good Evening!”elseGreeting = ” Good someothertime!”endif%同样 也可以在 ELSE 语句 后放置 多个 语句。因为一 个条件要 么为 TRUE,要么为FALSE,因此 THEN 表达式后 和 ELSE 表达式后 的语句中, 只有一组可以被执行 。分支语句支 持嵌套,例如 : #5:00:00pm#thenif time 在例中,如 果是在晚上十点之前,问候语是“Good Evening!” ,如果时间晚于十点,则问候语是” Good LateE
37、vening!”。 如果不是在五点之后, 则使用问候语“Good someothertime!” 。如果在一个分支中,只需执行一个语句,可以不需 END IF 表达式,但是仍然建议使用endif表达式 ,这样程序看起来条例更清楚。例:%if time %if time SELECTCASE 语句该语句允许一次测试多个条件,从而执行不 同的程序 块,其中 SELECTCASE 语句后面跟的可以是 表达式或 变量。如 下例所示:在例中,变量Visitor_Name代表站点 访问者的名字。如果Visitor_Name匹配某个条件,则相应的问候语被分配给变量Greeting。否则执行 CASE ELS
38、E 表达式后 面的语句。CASE ELSE 语句是可 选的,如果省去这个表达式 ,并且所有的 CASE 条件都没有与Visitor_Name匹配,则不执行 任何语句。Vbscript 中循环的实现用 FOR循环执行重复操作当知道循环的 次数时,可使用 FOR.NEXT 循环,如 下例所示:Hello Again!在这个例子中,句子“Hello Again!”被在浏览器 中打印 500次。可以通过使用 关键字 STEP构造反向的循环。 参考下面的例子 :Hello Again!这个例子输出与上一个例子完全相同的结果。但是,在这 个例子中, FOR.NEXT 循环从数字 500开始,反向循环到 1
39、。可以在循环中使用 不同的步长。在下面的例子中,变量i每次被增加 10: 循环的退出可以用 EXIT FOR 语句从一个 FOR.NEXT 循环退出。假定你在遍历一个数组,寻找PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 38 页 - - - - - - - - - 到某个字符串表达式 的匹配值。当已经找到了一 个匹配时,你不需要继续执行循环:在例中, 如果数组中某个元素的值与表达式“Shoes ”相匹配, 则立即退出 FOR.N
40、EXT循环。变量i的值等于被匹配的元素的索引值。Vbscript还提供了另一个遍历数组或集合的循环语句 :FOR EACH.NEXT 语句,参考下面的例子所示:这个例子中的脚本 与上一个例子完成相同的任务。当字符串表达式 得到匹配时,立即退出循环。但是, 当脚本完成时,变量i的值等于“Shoes ”。与 FOR.NEXT 循环不同,这里的变量 i 不是一个计数器。而是代表循环所操作的数 组或集合的每个成员的值。如果需要显示一个数组的所有元素的值,可以 写成:PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -
41、 - - - 名师精心整理 - - - - - - - 第 21 页,共 38 页 - - - - - - - - - 用 WHILE 和 DO 执行条件循环当知道循环的 次数执行一组指令时,FOR.LOOP 循环是 非常方便的。但在 许多情况下,在一个循环执行之 前,不知道循环执行的次数。这种 情况下,需要使用 WHILE 循环或 DO 循环。WHILE循环当 WHILE 后面的表达式结果 为 TRUE 时,重复执行循环体内的语句。例:%TheFuture=DATEADD( “ s” , 5 ,TIME )WHILE TIME : Waiting For The Future. The Fu
42、ture sHere!处在 WHILE 和 WEND 之间的所有语句被重复执行,直到时间逝去 5 秒。WHILE 语句 测 试 当时 时间 是 否 小 于 变量TheFuture中的 时 间 。一 旦当 前时 间 大 于或 等于TheFuture,则退出循环。该例子中 出现了DATEADD这个函数, 该函数的使用 方法如下:DateAdd(interval,number, date)返回加上了一 段时间间隔的日期,DataAdd 函数参数参数说明PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
43、 名师精心整理 - - - - - - - 第 22 页,共 38 页 - - - - - - - - - interval字符串表达式 ,加上时间间隔的单位。number数值表达式 ,是要加上的时 间间隔的数目。其数值可以为 正数(得到 未来的日期) ,也可以为 负数(得到过 去的日期) 。date日期表达式 。interval 参数设定值值说明yyyy年q季m月y一年的日数d日w一周的日数ww周h时n分钟s秒比如:DateAdd(d,10,2000-6-18) = 2000-06-28DateAdd(m,-1,2000-6-18) = 2000-05-18DO 循环PDF pdfFacto
44、ry Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 38 页 - - - - - - - - - 与 WHILE 循环密切相关;uDo While 条件为真,重复执行uDo Until条件为真,退出循环%Do While sentence ” Hello There!”sentence= ” Hello There!”%例中, 当变量sentence的值不等于字符串”Hello There!”时,处在DO语句和LOOP语句之间的语句 被重复执行。在循环 体内变
45、量sentence被赋值”HelloThere!” ,WHILE 条件只在第一次迭代时为 TRUE。这个 DO 循环体内的语句 只执行 一次,字符串”Hello There!”在屏幕上打印一次。也可以 构造一个一直执行直到某个条件为真退出的循环,如 下例所示:DO循环 只执行 3 次。一旦变量sentence的值等于”Hello There!”就不再PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 38 页 - - - - - - -
46、 - - 执行循环。也可以 把表达式 WHILE 或 UNTIL 转移到循环的 底部,这样唯一的区别 是循环一 定会先执行一次,然后才进行判断 。如下例:使用 DO 循环时,用 EXIT DO 语句可 退出循环。考虑如 下的循环 :%Rept”Do until 11Rept = Rept& ” ! ”if Rept=” ! ” thenExit doendifLoop%在这个例子中, DO 循环一 直执行到 1 不等于 1,换句话说,它将永远循环下去。然而,在每一次循环中,变量Rept被追加一个感叹号。当变量Rept等于 字符串”! ”时,Exit do语句强制退出循环。请注意:在使用 WHI
47、LE 或 DO 构造循环时,如 果循环条件设置不当,极易构造出死循环。如果偶尔运行了一个死循环,经过一定时间之后(通常是 90 秒) ,脚本超时,然后会自动结束。如果一个脚本要进行大量费时的操作,运行时间较长,有可能超出超时时间;即脚本PDF pdfFactory Pro 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 25 页,共 38 页 - - - - - - - - - 本身没有问题,但是 被系统当成意外而将其提前中止了。为 避免这种情况,在 ASP 中可以设定脚本的 超时时
48、间:Server.ScriptTimeOut =时间(以秒为单位) 。VBScript 常用函数VBScript有很多现成的函数可以 直接调 用,熟 悉这些函数将提高编程 效率,下面是一些比较常用的函数。功能描述语言元素返回 数字的绝对值。Abs 函数返回 一个 Variant值,其中 包含 一个数组。Array函数返回与 字符串中首字 母相关的 ANSI 字符编 码。Asc 函数返回与 所指定的 ANSI字符编 码 相关的字符。Chr 函数返回 一个表达式 ,该 表达式已 被转换 为 Integer子类型 的 Variant 。CInt 函数返回 一个表达式 ,该 表达式已 被转换 为 St
49、ring子类型 的 Variant 。CStr 函数返回 当前的系统日期 。Date 函数返回 一个 1 到 31 之间 的 整数, 包括1 和 31,代表一个月中的 日期值。Day 函数计算 一个表达式 的值并返回结果 。Eval 函数返回 一个数的 整数部 分。Fix 函数返回 一个字 符串,代 表一个数的 十六 进制值。Hex 函数返回 一个 0 到 23 之间 的整 数,包括0 和 23,代表一天中的 小时值。Hour 函数在一 个对 话框中显示 提示信息 ,等待 用户输 入文本或 单击按钮,并返回文本 框中的 内容。InputBox函数返回 一个字 符串在另 一个字 符串中首 次出现
50、的位置 。InStr 函数返回 一个字 符串在另 一个字 符串中出 现的位置 ,从 字符串尾开始计算 。 InStrRev 函数返回 数组的指定维上 最小 可用的 下标 。LBound 函数返回 一个已转换 为小 写的字符串。LCase 函数返回 字符串左端的指 定数量的 字符。Left 函数返回 一个字 符串中的 字符数 或存储 一 个变量 所需的 字节数。Len 函数返回 在一 个字 符串中 指定数量的 字符。Mid 函数返回0 到 12 之间 的一 个整 数,包括0 和 12,代表一年中的 月份值。Month函数返回 一个字 符串,指明 所指定的月份 。MonthName 函数在对 话框