




已阅读5页,还剩160页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章在ASP中使用VBScript,本章要点:lVbscript的常量、变量lVbscript的控制转移和循环lVbscript中的过程lVbscript的浏览器及Err对象lVBScript事件处理和错误调试技术,4.1脚本语言,4.1.1什么是脚本语言是介于HTML和Java、C+、VisualBasic之类的编程语言之间的语言。主要用于格式化文本和使用以编程语言编写的已编译好的组件。可以用在服务器端,也可以用在客户端,用在服务器端时,需要安装脚本引擎。,常用的脚本语言:VBScriptJavaScriptPerl,ASP带有两个脚本引擎:MicrosoftVisualBasicScriptingEdition(VBScript)缺省语言是VBScript,当安装完ActiveServerPages时,它就已存在了。同时安装的还有MicrosoftJScript。,4.1.2VBScript和JScript之间的区别,VBScript是VisualBasic的子集,因为VBScript是特意为在浏览器中进行工作而设计的,它不包括一些在脚本这个范围以外的特性,如文件访问和打印等等。JScript是Java语言的子集,没有Java复杂。主要用于脚本编写的脚本语言。,JScript和VBScript的任务是相同的都是用来编写Web网页的。每种语言都支持一些别的语言不支持的特性。VBScript和JScript之间最大的区别就是它们的结构。,选择脚本类型时要考虑的因素:选择脚本语言很多因素,比如:将要使用的平台能否支持所使用的语言?所编写的或要编写的是客户端应用还是服务器端应用?如果是服务器端的,用户会使用什么浏览器和服务器软件?,1什么时候选择VBScriptBScript主要是用在微软公司的各种平台上。VBScript来可以应用在下面两种场景:服务器脚本。运行在web服务器端(如在ASP网页中),这个服务器必须是IIS。客户端脚本。运行在客户的浏览器中,这个浏览器必须是IE。,2什么时候选择Jscript所有的浏览器都支持JScript。因此,如果为一个公共Web站点编写一个应用程序,用JScript来编写客户端脚本是很自然的选择。如果想用JScript来编写服务器脚本,那么应该检查一下的服务器是否支持它。微软公司的IIS允许你用JScript来编写ASP网页的脚本,但这并不是所有的服务器都支持的。,影响到你做决定的其它因素还有:动态执行面向对象,3区分大小写JScript能够区分大写和小写。大小写敏感。varA;vara;,VBScript当然是不区分大写和小写字母的。大小写不敏感。varA;vara;,4.1.3在同一个网页中同时使用几种语言,在同一个网页中可以使用不同的脚本编写语言,其原因是:(1)只是想在一个程序中利用某种语言的优点,而脚本的其它部分还是用另外一种语言来编写。(2)所面对的现有的编码是用不熟悉的语言来编写的。例如,设计时间控制是用JScript编写的,而熟悉的语言却是VBScript。,在大部分情况下,可以在同一个网页中混合几种脚本语言并且它们相互之间能够配合得很好。用一种语言编写的脚本可以调用用另一种语言编写的程序并且能够共享全局变量。,1服务器脚本的执行顺序一般情况下内联服务器脚本(在分隔符中的脚本)按顺序运行,从头到尾。,2脚本块的顺序在把几种语言混合使用时,块在网页中出现的顺序非常重要,有时候会影响到它们是否能正常工作。看看下面这个简单的例子,它是在一个内联的VBScript脚本中调用一个用JScript编写的函数:调用一个Jscript函数aNumber=2doubledNumber=doubleMe(aNumber),document.write(答案:,4.1.4设置主脚本语言ASP主脚本语言是用来处理在分界符内部的命令的语言。默认时,主脚本语言是VBScript,当然可以将任何一种具有脚本引擎的脚本语言作为主脚本语言,也可以逐页设置主脚本语言,或在ASP应用程序中设置所有页的主脚本语言。,1为某页设置语言要设置单个页的主脚本语言,可将指令添加到.asp文件的开头。该指令的语法是:其中ScriptingLanguage就是所要设置的页的主脚本语言。如果对某页进行了设置,那么该页将忽略在应用程序中对所有页的全局设置。,2为应用程序设置语言在应用程序中,如要为所有页设置主脚本语言,可在Internet服务管理器的“应用程序选项”选项卡上设置“默认的ASP语言”属性。3在服务器上使用VBScript和JScript在服务端通过ASP使用VBScript时,由于ASP脚本是在服务器端执行的,两个VBScript特征将失效,即表示用户接口的元素的VBScript语句InputBox和MsgBox将不被支持。另外,在服务器端的脚本中,请不要使用VBScript函数,CreateObject和GetObject,而要使用Server.CreateObject,这样ASP就可以跟踪对象实例了。用CreateObject或GetObject创建的对象不能访问ASP内建对象,也不能参与事务处理。,4.2.1VBScript数据类型VBScript只有一种数据类型,称为Variant。Variant是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息。因为Variant是唯一的数据类型,所以它也是VBScript中所有函数的返回值的数据类型。,4.2VBScript基础,表4-1Variant子类型,可以使用转换函数来转换数据的子类型,用VarType函数返回数据的Variant子类型。,4.2.2变量,1声明变量在VBScript中声明一个变量可以使用Dim语句、Public语句和Private语句。(1)Dim语句Dim语句用来明确地声明变量。与VisualBasic不同的是,它无需指明变量的数据类型。因为VBScript中,只用一种数据类型。,格式:Dim变量名称例如:DimDegreesFahrenheit声明多个变量时,使用逗号分隔变量。例如:DimTop,Bottom,Left,Right(2)Redim语句Redim语句是专用来定义数组的。当需要根据数据的增加和删除来扩大或缩小数组的大小时,可通过Redim语句来实现。,下面是一个扩大数组的简单格式:DimdatanumRedimPreservedatanum(20)RedimPreservedatanum(20)语句将数组的元素扩大到20。默认的情况下,使用Redim语句的同时会清除数组中的所有值。而使用Preserve关键字可以将所有现存的数据保存下来,并添加新的空白单元;,如果缩小了数组的大小,那么被减去的单元中的数据也会丢失。3)Public关键字Public关键字用于定义全局型变量。格式:Public变量名称例如:Publica,b和Dim语句一样,Public可以声明变量,并可以一次声明多个变量,也可以声明一维或多维数组。所不同的是Public关键字定义的变量是全局变量。(4)Private关键字,Private关键字可以定义变量、一次定义多个变量、定义一维或多维数组,不同的只是变量的作用范围不同。下面列出了使用上面语句或关键字定义的变量的可能作用范围:lDim、Redim:整个脚本程序或过程、函数中。lPublic:整个脚本程序。lPrivate:过程或函数中。,(5)OptionExplicit语句虽然可以不声明变量而直接使用,但是,这通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行脚本时出现意外的结果。因此,最好使用OptionExplicit语句显式声明所有变量,并将其作为脚本的第一条语句。这样,如果以后拼写错变量名,VBScript就会提醒你这个变量没有声明,而避免出现由于拼写错误所造成的问题。,2命名规则变量命名必须遵循VBScript的标准命名规则。变量命名必须遵循:l第一个字符必须是字母。l不能包含嵌入的句点。l长度不能超过255个字符。l在被声明的作用域内必须唯一。,3变量的作用域及存活期过程级变量:在过程中声明的变量。则只有该过程中的代码可以访问或更改变量值。具有过程级作用域SubSub1()dimvar1var1=2008var1=var1+1EndSub,脚本级变量:在过程之外声明的变量。则该变量可以被脚本中所有过程所识别,具有脚本级作用域。dimvar1SubSub1()var1=2008EndSub,4给变量赋值给变量赋值很简单,创建如下形式的表达式给变量赋值:变量在表达式左边,要赋的值在表达式右边。例如:B=200,5标量变量和数组变量多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号()。下例声明了一个包含11个元素的一维数组:DimA(10),虽然括号中显示的数字是10,但由于在VBScript中所有数组都是基于0的,所以这个数组实际上包含11个元素。在基于0的数组中,数组元素的数目总是括号中显示的数目加1。这种数组被称为固定大小的数组。在数组中使用索引为数组的每个元素赋值。从0到10,将数据赋给数组的元素,如:,A(0)=256A(1)=324A(2)=100A(10)=55与此类似,使用索引可以检索到所需的数组元素的数据。如:SomeVariable=A(8),数组并不仅限于一维。数组的维数最大可以为60。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable变量是一个有6行和11列的二维数组:DimMyTable(5,10)在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。,RedimMyArray(25)RedimPreserveMyArray(30)重新调整动态数组大小的次数是没有任何限制的。但是应注意:将数组的大小调小时,将会丢失被删除元素的数据。4.2.3常量其值不能改变的量。,Const常量名=初值ConstMyString=这是一个字符串。ConstMyAge=49请注意字符串文字包含在两个引号()之间,这是区分字符串型常数和数值型常数的最明显的方法。日期文字和时间文字包含在两个#之间。例如:ConstCutoffDate=#6-1-97#,在VBScript中已经定义了许多固有常量,可以直接引用。1Empty常量Empty常量表示一个为初始化的变量。如果定义了一个变量,没有对它赋值,那么这个变量就是Empty。,2Null常量Null常量表示一个变量包含无效的数值。注意,Empty和Null是不一样的:当在一个表达式中使用值为Empty的变量时,如果它被用作数字,则它等于0;如果它被用作字符串,那么它就等于0长度字符串。Null则不同,它表示变量中没有包含有效数据。,3Nothing常量Nothing用于断开对象变量和任何实际对象之间的链接,使用SET语句可将一个对象变量设置为Nothing,如:Set对象变量名Nothing通过把一个对象变量赋值为Nothing,表明已经使用完了变量所链接的对象,可以释放该对象所占用的内存以及分配给该对象的其它系统资源。如果有多个变量同时链接到一个对象,VBScript直到指向该对象的所有变量都设置为Nothing时,才会释放该对象资源。,4True和False常量True的值为-1;False的值为0。4.2.4VBScript运算符VBScript有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。当表达式包含多个运算符时,将按预定顺序计算每一部分,这个顺序被称为运算符优先级。可以使用括号越过这种优先级顺序,强制首先计算表达式的某些部分。,先执行括号中的运算符,然后再执行括号外的运算符。当表达式包含多种运算符时,先算术运算符(先乘除,后加减),然后比较运算符(优先级相同),最后逻辑运算符。优先级相同的运算,按照从左到右的顺序计算。逻辑运算优先级NOTANDOR,字符串连接运算符&不是算术运算符,但是在优先级顺序中,它排在所有算术运算符之后和所有比较运算符之前。Is运算符是对象引用比较运算符。它并不比较对象或对象的值,而只是进行检查,判断两个对象是否引用同一个对象。,4.3VBScript中的条件语句,If(逻辑表达式)ThenElseEndifSelectCase语句,4.3.1IfThenElse语句If(逻辑表达式)ThenElseEndif要在条件为True时运行单行语句,可使用IfThenElse语句的单行语法。如:,SubFixDate()DimmyDatemyDate=#2/13/95#IfmyDate10myNum=myNum-1counter=counter+1LoopMsgBox循环重复了&counter&次。EndSub,TrueorFalses?,True,False,SubChkLastWhile()Dimcounter,myNumcounter=0myNum=9DomyNum=myNum-1counter=counter+1LoopWhilemyNum10MsgBox循环重复了&counter&次。EndSub,(2)重复执行语句直到条件变为TrueUntil关键字用于检查DoLoop语句中的条件。有两种方式检查条件:在进入循环之前检查条件;或者在循环至少运行完一次之后检查条件。只要条件为False,就会进行循环。,SubChkFirstUntil()Dimcounter,myNumcounter=0myNum=20DoUntilmyNum=10myNum=myNum-1counter=counter+1LoopMsgBox循环重复了&counter&次。EndSub,SubChkLastUntil()Dimcounter,myNumcounter=0myNum=1DomyNum=myNum+1counter=counter+1LoopUntilmyNum=10MsgBox循环重复了&counter&次。EndSub,(3)退出循环ExitDo语句用于退出DoLoop循环。因为通常只是在某些特殊情况下要退出循环(例如要避免死循环),所以可在IfThenElse语句的True语句块中使用ExitDo语句。如果条件为False,循环将照常运行。在下面的示例中,myNum的初始值将导致死循环。用IfThenElse语句检查此条件,可防止出现死循环。SubExitExample()Dimcounter,myNum,counter=0myNum=9DoUntilmyNum=10myNum=myNum-1counter=counter+1IfmyNum10ThenExitDoLoopMsgBox循环重复了&counter&次。EndSub,2使用WhileWendWhileWend语句是为那些熟悉其用法的用户提供的。但是由于WhileWend缺少灵活性,所以建议最好使用DoLoop语句。3使用ForNextForNext语句用于将语句块运行指定的次数。在循环中使用计数器变量,该变量的值随每一次循环增加或减少。例如,下面的示例将过程MyProc重复执行50次。,For语句指定计数器变量x及其起始值与终止值。Next语句使计数器变量每次加1。SubDoMyProc50Times()DimxForx=1To50MyProcNextEndSub关键字Step用于指定计数器变量每次增加或减少的值。在下面的示例中,计数器变量j每次加2。循环结束后,total的值为2、4、6、8和10的总和。,SubTwosTotal()Dimj,totalForj=2To10Step2total=total+jNextMsgBox总和为&total&。EndSub要使计数器变量递减,可将Step设为负值。此时计数器变量的终止值必须小于起始值。在下面的示例中,计数器变量myNum每次减2。循环结束后,total的值为16、14、12、10、8、6、4和2的总和。,SubNewTotal()DimmyNum,totalFormyNum=16To2Step-2total=total+myNumNextMsgBox总和为&total&。EndSubExitFor语句用于在计数器达到其终止值之前退出ForNext语句。因为通常只是在某些特殊情况下(例如在发生错误时)要退出循环,,所以可以在IfThenElse语句的True语句块中使用ExitFor语句。如果条件为False,循环将照常运行。4使用ForEachNextForEachNext循环与ForNext循环类似。ForEachNext不是将语句运行指定的次数,而是对于数组中的每个元素或对象集合中的每一项重复一组语句。这在不知道集合中元素的数目时非常有用。在下例中,Dictionary对象的内容用于将文本分别放置在多个文本框中:程序见书sample4-01.html,在VBScript中,过程被分为两类:Sub过程和Function过程。4.5.1Sub过程Sub过程是包含在Sub和EndSub语句之间的一组VBScript语句,它只执行操作不返回值。Sub过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果Sub过程无任何参数,则Sub语句必须包含空括号()。,4.5VBScript中的过程,下面的Sub过程使用两个固有的(或内置的)VBScript函数,即MsgBox和InputBox,来提示用户输入信息。然后显示根据这些信息计算的结果。计算由使用VBScript创建的Function过程完成。SubConvertTemp()temp=InputBox(“请输入华氏温度。,1)MsgBox温度为&Celsius(temp)&摄氏度。EndSub,4.5.2Function过程Function过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果Function过程无任何参数,则Function语句必须包含空括号()。Function过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。Function返回值的数据类型总是Variant。,在下面的示例中,Celsius函数将华氏度换算为摄氏度。Sub过程ConvertTemp调用此函数时,包含参数值的变量被传递给函数。换算结果返回到调用过程并显示在消息框中。SubConvertTemp()temp=InputBox(请输入华氏温度。,1)MsgBox温度为&Celsius(temp)&摄氏度。EndSub,FunctionCelsius(fDegrees)Celsius=(fDegrees-32)*5/9EndFunction4.5.3过程的数据进出给过程传递数据的途径是使用参数。参数被作为要传递给过程的数据的占位符。参数名可以是任何有效的变量名。使用Sub语句或Function语句创建过程时,过程名之后必须紧跟括号。括号中包含所有参数,参数间用逗号分隔。,例如,在下面的示例中,fDegrees是传递给Celsius函数的值的占位符:FunctionCelsius(fDegrees)Celsius=(fDegrees-32)*5/9EndFunction要从过程获取数据,必须使用Function过程。请记住,Function过程可以返回值;Sub过程不返回值。,4.5.4在代码中使用Sub和Function过程调用Function过程时,函数名必须用在变量赋值语句的右端或表达式中。例如:Temp=Celsius(fDegrees)或MsgBox“温度为”&Celsius(fDegrees)&“摄氏度。”调用Sub过程时,只需输入过程名及所有参数值,参数值之间使用逗号分隔。可以不使用Call语句,但如果使用了此语句,则必须将所有参数包含在括号之中。,下面的示例显示了调用MyProc过程的两种方式。一种使用Call语句;另一种则不使用。两种方式效果相同。CallMyProc(firstarg,secondarg)MyProcfirstarg,secondarg请注意,当不使用Call语句进行调用时,括号被省略。,4.6注释VisualBasic脚本,注释可以提高代码的可读性,尤其是在别人阅读你的程序代码时。可以在ASP网页中使用HTML风格的注释。但是,在VisualBasic脚本中不能用这种注释。要在一个脚本中加人注释,必须用下面的方法:,在这个例子中,REM语句用来建立一条注释。注意一个撇号可以用于同样的目的。REM语句与撇号()执行同样的功能。这两种注释只能用来注释一行。用REM语句或撇号建立的注释在一行的末尾结束。但是,可以把注释与其它VisualBasic语句写在同一行中:,HTML风格的注释与VBScript注释的一个重要区别是VBScript注释不发送给浏览器,不能用Web浏览器中的查看源文件命令来察看VBScript注释。,4.7VBScript中的函数,VBScript提供了很多功能强大的函数,为用户编程提供了方便。同时,用户还可以根据需要自定义一些函数。本节介绍一些常用的函数。4.7.1日期和时间函数VBScript有许多函数,可以得到各种格式的日期和时间。例如可以用函数NOW返回当前的日期和时间:现在的时间是,应该注意,返回的日期和时间是Web服务器的系统时钟的日期和时间。如果身处纽约的某个人在看你的网页,他所看到的日期和时间与他当地的日期和时间可能是不一致的。函数NOW同时返回日期和时间。如果只想返回当前日期,可以使用函数DATE。如果只想返回当前时间,可以使用函数TIME。例如:日期:时间:,1日期的操作使用函数MONTH(),DAY(),WEEKDAY()和YEAR()。可以把一个日期分割成更小的部分。所有这些函数都以一个日期表达式作为参数,并返回一个数字。这里有一个如何使用这些函数的例子:本月是:今天是:,星期是:今年是:假设当前日期是2003年2月12日,星期三。如果把上面的例子包含在一个ASP网页中,在浏览器中将显示如下的文字:本月是:2今天是:12星期是:3今年是:2003,注意,函数weekday()假定一个星期的第一天是星期日。如果想把星期一作为一周的第一天,可以使用如下的语句:本周是:也可以把任何一天作为一周的第一天。要指定一周的第一天是星期几,只要用vbSunday,vbMonday,vbTusday,vbWednesday,vbThurday,vbFriday或vbSaturday代替函数WEEKDAY()的第二个参数即可。,不但可以用函数DATE作为这些函数的参数,也可以提供一个日期字符串或者一个日期常数作为参数,如:本周是:本周是:这两个函数都返回2002年圣诞节这一天是星期几。表达式#12/25/2002#是一个日期常数,它总是括在字符中。表达式12-25-2002是一个日期字符串。这两种方法都可以为函数提供一个日期。,要以更加易读的形式返回月份和星期几,可以使用函数WEEKDAYNAME()或MONTHNAME()。这两个函数返回的是字符串。例如:本月是:本周是:可以把1到12之间的任何整数作为函数MONTHNAME()的参数,把1到7之间的任何整数作为函数WEEKDAYNAME()的参数。,2时间的操作通过函数HOUR(),MINUTE(),和SECOND(),可以返回时间的不同部分。下面是使用这些函数的一些例子以及可能的返回值:时:时:18分:分:39秒:秒:34,函数HOUR()返回一个0到23之间的整数(0点是午夜后的一个小时)。函数MINUTE()返回一个0到59之间的整数。函数SECOND()也返回一个0到59之间的整数。不仅可以用函数TIME作为这些函数的参数,还可以提供一个时间常数或时间字符串作为参数。下面的两个例子都是从时间中抽取分钟数34:分:分:34分:分:34,3日期和时间的比较VBScript有两个用于比较日期和时间的函数。可以用函数DATEADD()对日期和时间作加法,用函数DATEDIFF()计算两个日期或时间的间隔。下面是使用函数DATEADD()的例子:你的账号将于过期你的账号将于2003-4-27过期,上例返回比当前日期晚六个星期的日期。函数DATEADD()有三个参数:第一个参数指定一个时间间隔。(见书中表4-3)第二个参数时间间隔的倍数因子。第三个参数是一个日期或时间的变量或常量。可以用函数DATEDIFF来确定两个日期或时间之间的间隔,此函数在处理按时间计费的系统时十分有用。如:,第一句中的DATEDIFF()函数返回1/1/2000与当前日期之间的天数。第二句中的DATEDIFF(),返回当前日期到2005年1月1日当前时刻之间的秒数。函数DATEDIFF()有三个参数。第一个参数是一个日期或时间间隔;另两个参数是两个日期。为了避免出现负数,第一个日期参数应该比第二个早。,4格式化日期和时间可以规定一个日期或时间的显示格式。在缺省情况下,当通过函数DATE显示一个日期时,它看起来是这样的:2/9/03或2/9/2003至于显示哪种日期格式取决于控制面板中区域设置的指定,前者为短格式,后者为长格式也可以用函数FORMATDATETIME()显示一个基于你计算机的区域设置的日期。,下面的例子演示了如何控制长日期格式和短日期格式的显示:短日期格式:长日期格式:根据中国区域设置显示日期时,日期显示为如下的格式:短日期格式:2003-2-16长日期格式:2003年2月16日,注意短日期格式的显示与不做任何格式化时完全相同。在缺省情况下,日期以短日期格式显示。也可以用函数FORMATDATETIME()格式化一个时间。同样,可以指定一个时间显示为长格式或短格式。当用短格式显示时间时,将使用24小时时钟(军事时间)。下面的例子演示了如何用FORMATDATETIME()函数操作时间:短时间格式:,长时间格式:当以中国区域设置显示时间时,时间的格式如下:短时间格式:19:47长时间格式:19:47:074.7.2数据转换函数虽然在VBScript中所有的变量都被设置为Variant类型,都是在数学运算和数据库存储操作时仍然会涉及到数据转换的问题。,1CBool函数功能:把指定的参数转换为Bool数据类型。格式:CBool(表达式)表达式是任意有效的表达式。如果表达式是零,则返回False;否则返回True。如果表达式不能解释为数值,则将发生运行时错误。,2CByte函数功能:把指定的参数转换为Byte数据类型。语法:CByte(表达式)表达式参数是任意有效的表达式。可以使用子类型转换函数书写代码,以显示某些操作的结果应被表示为特定的数据类型,而不是默认类型。例如,在出现货币、单精度、双精度或整数运算的情况下,使用CByte强制执行字节运算。,CByte函数用于进行从其它数据类型到Byte子类型的的国际公认的格式转换。例如对十进制分隔符(如千分符)的识别,可能取决于系统的区域设置。如果表达式在Byte子类型可接受的范围之外,则发生错误。3CCur函数功能:把指定的参数转换为Currency(货币)数据类型。格式:CCur(表达式),表达式参数是任意有效的表达式。值的范围是从-922,337,203,685,477.5808到922,337,203,685,477.5807,并且Currency数据类型自能够处理小数点后四位小数。可以使用子类型数据转换函数书写代码,以显示某些操作的结果应当被表达为特定的数据类型,而非默认的数据类型。例如在整数运算的情况下,使用CCur函数强制进行货币计算。CCur函数用于进行从其它数据类型到Currency子类型的国际公认的格式转换。例如,对十进制分隔符和千位分隔符的识别取决于系统的区域设置。,4CDate函数功能:把指定的参数转换为Date数据类型。格式:CDate(日期)日期参数是任意有效的日期表达式。IsDate函数用于判断日期参数是否可以被转换为日期或时间。CDate识别日期文字和时间文字,以及一些在可接受的日期范围内的数字。在将数字转换为日期时,数字的整数部分被转换为日期,分数部分被转换为从午夜开始计算的时间。,CDate根据系统的区域设置识别日期格式。如果数据的格式不能被日期设置识别,则不能判断年、月、日的正确顺序。另外,如果长日期格式包含表示星期几的字符串,则不能被识别。5CDbl函数功能:把指定的参数转换为Double数据类型。格式:CDbl(表达式)表达式参数是任意有效的表达式。,可以使用子类型数据转换函数书写代码,以显示某些操作的结果应当被表达为特定的数据类型,而非默认的数据类型。例如在出现货币或整数运算的情况下,使用CDbl或CSng函数强制进行双精度或单精度算术运算。CDbl函数用于进行从其它数据类型到Double子类型的国际公认的格式转换。例如,十进制分隔符和千位分隔符的识别取决于系统的区域设置。,6CInt函数功能:把指定的参数转换为Integer数据类型。格式:CInt(表达式)表达式参数是任意有效的表达式。可以使用子类型转换函数书写代码,以显示某些操作的结果应被表示为特定的数据类型,而不是默认类型。例如,在出现货币、单精度或双精度运算的情况下,使用CInt或CLng强制执行整数运算。,如果表达式参数在Integer子类型可接受的范围(-32768到32767)之外,则发生错误.注意:CInt与Fix和Int函数不同,后两者将数字的分数部分截尾取整,而不是四舍五入。当分数部分恰好为0.5时,CInt函数通常将其四舍五入为最接近的偶数。例如,0.5被四舍五入为0,而1.5被四舍五入为2。,7CLng函数功能:把指定的参数转换为Long数据类型。格式:CLng(表达式)Long数据类型可以容纳-2,147,483,648到2,147,483,647之间的数。8CSng函数功能:把指定的参数转换为Single数据类型。,格式:CSng(表达式)Single数据类型可以容纳-3.402823E38到-1.401298E-45的负数,从1.401298E-45到3.402823E38的正数。9CStr函数功能:把指定的参数转换为字符串。格式:CStr(表达式),4.7.3数学函数1Sqr函数功能:返回指定参数的平方根。格式:Sqr(number)2Abs函数功能:返回指定参数的绝对值。格式:Abs(number),3Cos/Sin函数功能:用来计算指定参数(以弧度为单位,可以是参数或表达式)的余弦或正弦值。格式:Cos(number)Sin(number)4Len函数功能:计算指定字符串的长度。格式:Len(String)String也可以是字符串变量或表达式。,5Asc函数功能:返回指定字符的ASCII码。格式:Asc(String)String参数可以是字符或任意有效的字符串表达式。6Chr函数功能:根据一个ASCII码值返回指定字符。格式:Chr(charcode),7Rnd函数功能:产生一个随机数。格式:Rnd(number)4.7.4字符串函数字符串函数主要提供对字符串进行查找、替换和提取的功能。1Filter函数功能:查找包含符合要求字符的字符串。格式:Filter(源字符串,过滤字符串,提取方式,搜索方式),源字符串可以是直接指定的字符串,也可以是字符串变量和数组;过滤字符串是指定搜索的字符串。提取方式有两种。当该参数设置为-1时,提取包含过滤字符串的字符串;当该参数设置为0时,提取不包含过滤字符串的字符串;搜索方式也有两种。当该参数设置为-1时,指示为基于文本的搜索;当该参数设置为0时,指示为二进制搜索。,2Instr函数功能:查找某字符串在另一字符串中第一次出现的位置。格式:Instr(开始位置,源字符串,要查找的字符串,比较方式)比较方式规定为:0时执行二进制比较;1执行文本比较;2执行基于包含在数据库(在此数据库中执行比较)中的信息的比较。,3Mid函数功能:从字符串中指定的起始位置返回指定数目的字符。格式:Mid(源字符串,起始位置,要求返回的字符数目)4Lcase/Ucase函数功能:把字符串中的所有字母转换成对应的小写字母或大写字母。格式:Lcase(字符串)Ucase(字符串),5Strreverse函数功能:将字符串颠倒过来。格式:Strreverse(字符串)6Ltrim、Rtrim和Trim函数功能:返回不带前导空格、后续空格或前导与后续空格(Trim)的字符串副本语法:LTrim(string)RTrim(string)Trim(string),7Space函数功能:返回由指定数目的空格组成的字符串。语法:Space(number)number参数为字符串中用户所需的空格数。,4.7.5格式化函数1FormatNumber函数功能:返回已被格式化为数值的表达式。语法:FormatNumber(expression,NumDigitsAfterDecimal,IncludeLeadingDigit,UseParensForNegativeNumbers,GroupDigits)详见书中表44、45,2FormatDateTime函数功能:返回已被格式化为日期或时间的表达式。语法:FormatDateTime(Date,NamedFormat)参数:Date必选。要被格式化的日期表达式。NamedFormat可选。指示所使用的日期/时间格式的数值,如果省略,则使用vbGeneralDate。详见书中表46、47,4.8消息框和输入框,4.8.1消息框消息框用来把警告、错误或者提示信息显示给用户,同时还返回用户在消息框中通过单击按钮反馈的信息。(1)语法MsgBox(prompt,buttons,title,helpfile,context)MsgBox函数中的参数见书中表4-7。buttons参数见书中表4-8。,(2)返回值MsgBox函数的返回值见书中表4-9。(3)注意如果同时提供了helpfile和context,则用户可以按F1键以查看与上下文相对应的帮助主题。如果对话框显示取消按钮,则按ESC键与单击取消的效果相同。如果对话框包含帮助按钮,则有为对话框提供的上下文相关帮助。但是在单击其他按钮之前,不会返回任何值。,4.8.2输入框输入框用来接收来自用户的输入,它是在对话框中显示提示,等待用户输入文本或单击按钮,并返回文本框内容。(1)语法InputBox(prompt,title,default,xpos,ypos,helpfile,context)InputBox函数的参数见书中表4-10。(2)注意如果同时提供了helpfile和context,就会在对话框中自动添加“帮助”按钮。单击确定或按下ENTER,InputBox函数返回文本框中的内容。单击取消,返回一个零长度字符串()。,4.9浏览器对象及Err对象,浏览器本身的对象主要有三个:lLocation对象:URL网址对象。lDocument对象:加载网页和HTML标记的对象。lWindows对象:浏览器打开的窗口对象。,4.9.1Location对象Location对象主要是用来获取浏览器地址栏中的URL字符串和设置新的URL网址。例如::80/products?user=yinLocation对象的属性有以下几种:lHref::获取或设置完整的URL字符串。lProtocol:获取或设置URL字符串的协议,通常为http。,lHost:获取或设置HostName:Port,例如,上面的例子中,HostName:Port为:80lHostName:获取或设置HostName,此例中为。lPort:获取或设置Port,此例中为本80。lPathName:获取或设置URL的路径。lSearch:获取或设置URL中以?开头的参数。,4.9.2Document对象Document对象用来加载网页对象,它最常用的方法就是Write方法。,1.Open方法该方法用来为输出打开文档。执行Open方法后,文档中当前的内容将被清除,可以用Write或WriteLn方法把新字符串写到文档中。2.Write方法用write方法可以向文档中写入字符串,格式如下:writestring3.WriteLn方法将一个字符串写入当前文档,然后在字符串末尾加上一个新行符。4.Close方法该方法用来关闭文档,显示所有用Write或WriteLn方法写入的信息。5.Clear方法用来清除当前文档中的内容。,4.9.3Windows对象Windows对象最常使用的是它的两个事件:Onload事件:网页加载完时产生此事件。Onunload事件:网页上未加载时产生些事件。,Windows对象的事件有两种方式,一种是在BODY标记中指定此事件过程,例如:这样,网页加载完时就会转向BODY标记中指定的过程。另一种方式是直接定义该事件过程:SubWindows_onload事件处理代码EndSub,4.9.4Err对象Vbscript的错误处理使用Err对象。当在程序运行期间产生错误时,Err对象就会被创建。Err对象用来存储错误信息,并提供一些方法。ERR对象的格式如下:Eperty|method1Err对象的属性Property为Err对象的属性,主要有:Description:返回描述错误的字符串。HelpContext:为帮助文件中的题目返回一个上下文ID。,HelpFile:返回帮助文件的路径。Number:返回错误数,系统为每种错误都设有一个错误数。Source:返回触发错误的对象名称。为了更好地理解Err对象的基本信息,首先要触发一个错误,下面的代码通过语句document.write15/0触发一个错误,从而创建了一个Err对象,并显示Err对象的信息:详见书中程序sample4-02.html,2Err对象的方法Err对象有两个方法:Clear方法和Raise方法,它们的功能如下:Clear方法:清除最近接受到的一个错误,重置错误处理程序,以便继续执行程序。Raise方法:自定义错误,错误号可以选择内置错误号,也可以自己设定。有关此方法程序见书中程序sample4-03.html,4.10在VBScript中使用对象,无论使用的是ActiveX控件(以前称为OLE控件)还是Java对象,VBScript和IE都以相同的方式处理它们。ActiveX控件使得编制内嵌式网页变得更为容易,可以实现诸如媒体播放器之类的功能,更可以大大缩短开发周期。如果使用的是IE并且ActiveX库中安装了这些控件,就会看到用ActiveX控件制作的页面,否则必须安装有关控件。,标记用来包含对象,标记用来设置对象属性的初始值。使用标记类似于在VisualBasic中设置窗体控件的初始属性值。象对任何窗体控件一样,可以获取属性、设置属性和调用方法。,4.11VBScript事件处理,VBScript是一种标识语言,就像HTML一样,它不需经过编译,只要在支持它的浏览器上就能运行。和VisualBasic一样,VBScript也是建立在“对象”这一概念上的。什么是“对象”?简单地讲对象就是客观实体的逻辑抽象,是对属性和相关过程的软件封装。,对象有三个重要的内容:属性(Properties)、方法(Methods)和事件(Events)。属性是表征对象状态的变量,它的值的集合就是对象所处的某个确定的状态。方法是对象能够做的事情,其实是一些过程或函数。而事件则是对象可以对之产生响应的事。编写脚本的目的就是处理事件。在VBScript中,有三种处理事件的方式,它们适用于不同的情况。,汽车:属性(颜色,重量,座位数,排量,品牌,驱动方式)方法(发动引擎,加速,减速,熄火,转向,前进,后退)事件(on_打火,on_踩刹车,on_转方向盘,on_踩油门),触发事件,浏览器,VBScript引擎,事件处理脚本程序,4.11.1VBScript事件过程编写事件过程是最常用的事件处理方法。在VBScript中,使用一种特殊的命名方式来命名事件过程,这种格式的一般形式是:“对象名_事件”。当该对象发生事件时,系统就支寻找相应的处理过程来处理它,也就是说,VBScript通过将对象和事件合并起来为过程命名的方法来处理事件。,4.11.2内联事件处理使用事件过程是一种比较正式的事件处理方式,而处理内联事件更加简捷。它不用专门书写事件过程,只需要直接在对象的HTML文档位置书写即可。例如上面的例子可以改写为:,4.11.3FOR/EVENT属性如果不想用事件过程和内联事件来处理事件,还可以使用标记的FOR和EVENT属性。此属性允许把脚本与HTML文档中的任何对象和该对象的事件联系起来,其基本的格式是:FOR“对象名”EVENT=“事件”此处有关示例请参阅书中相关资料,4.11.4VBScript的常用事件在VBScript中,常用的事件有如下的几个:1OnFocus事件当一个对象获得键盘焦点时该事件被激活。例如可以在该事件被激活时在状态栏中显示用户进行何种操作的提示。下面就是这样的一个例子,当用户切换到不同的区域时,在状态栏里显示不同的提示内容,同时还利用MouseMove事件显示出光标的位置。程序见书中sample4-05.html,2MouseMove事件每一次把鼠标移动到一个对象上时该事件被活。该事件报告鼠标在移动过程中的位置。3OnMouseMove事件每一次把鼠标移动到一个对象上时该事件被活。与MouseMove不同的是它不报告鼠标的位置。4OnBlur事件当一个对象失去键盘焦点时该事件发生。如下例,当输入框失去焦点时,状态栏提示它已经失去焦点。程序见书中sample4-06.html,5OnChange事件每次当用户改变对象的数据并且失去焦点时,该事件被激活。例如,当用户在文本框中输入完数据后,如果用户将光标移向下一个输入项时,该对象被激活,用以提示所输入的内容。6OnClick事件每次在对象上按下鼠标的左键时该事件被激活。大多数的对象,如按钮,单选钮、单选框、文本等,都支持onClick事件。下面看一个onClick事件的一个例子。程序见书中sample4-07.html,7OnSelect事件每一次用户在单行或多行文本中用鼠标或按住shift键选取一部分内容时,该事件被激活。通过以上的学习我们可以看到,VBScript通过事件处理程序的编程方法可以提供交互作用。,4.12调试ASP脚本,无论是否有经验,都可能会遇到程序错误,或叫“bug”,这将影响服务器端脚本正常工作。因此,对于开发成功和强大的ASP应用程序,特别是当应用程序变得越来越复杂时,调试(即发现和改正脚本的过程)就显得极其
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学走进田间课件
- 教案及教学课件
- 课件模板制作流程
- 儿童玩水画画课件
- 体育小知识课件
- 欢乐有秘方课件
- 课件有趣自我介绍
- 儿童小班玉米课件
- 广东护理伦理自考考试题及答案
- 2025年中国屏风帘布数据监测报告
- 城市轨道交通工程技术专业介绍
- 新生儿疾病诊疗规范诊疗指南诊疗常规2022版
- 《智能投顾 大数据智能驱动投顾创新》读书笔记思维导图
- 职工自愿放弃社会保险协议
- SH/T 0356-1996燃料油
- 《小英雄雨来》阅读测试题附答案
- 危险品管理台帐
- 抗滑桩施工方案完整版
- 常用水利规范目录
- 高级财务管理(第三版)第02章-财务估价模型概览
- 人教版(新起点)英语六年级上Unit 1《In China》单元测试卷
评论
0/150
提交评论