第五章 VBScript 语言.ppt_第1页
第五章 VBScript 语言.ppt_第2页
第五章 VBScript 语言.ppt_第3页
第五章 VBScript 语言.ppt_第4页
第五章 VBScript 语言.ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,VBScript语言,VBScript是一种常用的脚本语言,广泛应用于ASP动态网页的设计。本章介绍VBScript语言的基本内容,包括VBScript概述、VBScript基本元素,基本语句、条件语句,循环语句、数组、过程以及脚本对象模型等。,2,什么是VBScript,VBScript的全称是MicrosoftVisualBASICScriptingEdition,它是程序开发语言VisualBASIC家族的最新成员,可以将灵活的脚本应用于更广泛的领域,包括MicrosoftInternetExplorer中的Web客户端脚本和MicrosoftInternetInformationServer中的Web服务器端脚本。,3,3.1.2在HTML页面中添加VBScript代码,VBScript脚本代码可以作为HTML文档的一部分而存在。换言之,这些代码必须放置在HTML文档中,否则是不能执行的。脚本代码可以放在HTML文档的任何位置,即BODY,或HEAD部分之中。通常是将脚本代码放在HEAD部分中,以使所有脚本代码集中放置,这样能确保在BODY部分调用代码之前读取并解码所有脚本代码。,4,.,无标题文档Response.Write(服务器端脚本模式)说明:,5,在HTML页面中添加VBScript脚本代码时,应以标记开始,而以标记结束,基本语法格式如下:,6,SCRIPT标记具有以下3个属性。(1)LANGUAGE:指定脚本代码所使用的脚本语言。对于InternetExplorer浏览器来说,该属性的取值可以是“VBScript”或“JScript”,前者也可以简写为“VBS。(2)EVENT:指定与脚本代码相关联的事件。(3)FOR:指定与事件相关联的对象。,7,注意,SCRIPT标记可以在HTML文档的HEAD和BODY部分出现任意次。大部分脚本代码放在Sub或Function过程中,仅在其他代码要调用它时执行。然而,也可以将脚本代码放在过程之外、SCRIPT块之中,这类代码仅在HTML页面加载时执行一次,可以在加载Web页面时初始化数据或动态地改变页面的外观。例31本例在表单中添加一个普通按钮,并在HEAD部分编写脚本代码以响应窗体中按钮的单击事件(onClick)。,8,无标题文档subaa()msgbox2+4+.+200=,_vbonlyok+vbinformation,msgbox语句应用endsub,9,VBScript基本元素,下面将介绍VBScript语言的基本元素,包括数据类型、常量、变量和运算符等。要学会用VBScript语言编写脚本代码,就必须掌握这些基础知识。,10,321数据类型,在VBScript语言中,只有一种数据类型,即Variant,称为变体型。Variant是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息。最简单的Variant数据可以包含数字或字符串信息。如果使用看起来像是数字的数据,则VBScript会假定其为数字并以适用于数字的方式来处理;如果使用的数据只可能是字符串,则VBScript将按字符串进行处理。当然,也可以将数字包含在引号(“”)中使其成为字符串。,11,VBScript常量,常量是在程序执行期间其值从不发生变化的数据。在VBScript中,常量分为普通常量和符号常量,前者无需定义即可在程序中使用,后者则要用Const语句才能使用。,12,ConstBookTitle=“ASP动态网页设计”ConstPI=3.1415926535897932384626433832795ConstBrithDate=#1790-6-18#,13,VBScript变量,1声明变量在VBScript中,通常使用Dim语句显式声明变量并分配存储空间,语法格式如下:Dim变量名,变量名例如,下面的两个语句分别声明了1个变量和4个变量:DimUserNameDimTop,Bottom,Left,Right,14,2.隐式声明变量,可以通过直接在脚本中使用变量名这种方式隐式声明变量。但通常不是一个好习惯,因为这样有时会由于变量名被拼错而导致在运行脚本时出现意外结果。若要强制显式声明所有变量,可以在脚本程序的开头处使用下面的语句:OptionExplicit,15,3给变量赋值,在VBScript中,可以通过赋值语句指定变量的值,此时变量位于等号的左边,要赋的位于等号的右边,该值可以是任何数值、字符串、常数或表达式。例如:UserName=“张三丰”BrithDate=#1790-6-18#WeekWage=500,16,)指定对象值Seta=createobject(scripting.filesystemobject)setb=asetc=aresponse.Write(指定对象值:bisc=&cbool(bisc)%,17,4.数组变量,例如,下面的语句声明了一个包含11个元素的一维数组:DimA(10)下面的赋值语句将数据赋给数组元素,或者将数组元素的值赋给变量:A(0)=256A(1)=368A(2)=121SomeVariable=A(8),18,数组并不仅限于一维。数组的维数最大可以为60。声明多维数组时,使用逗号分隔括号中每个表示数组大小的数字。例如,下面语句声明了一个有6行和11列的二维数组,其名称为MyTable:DimMyTable(5,10),19,方法1:如何将数字有序排列(0118.asp),)endifNext%,20,方法2:用服务器端脚本,subaa()dimww(100)fori=1to100ww(i)=iresponse.Write(ww(i)&)ifimod10=0thenresponse.Write()endifnextendsub,21,5.动态数组,动态数组是在运行脚本时大小发生变化的数组。对动态数组的最初声明可以使用Dim语句或ReDim语句来实现,但括号中不能包含任何数字。例如:DimMyArray()ReDimAnotherArray()若要使用动态数组,必须随后使用ReDim确定维数和每一维的大小。,22,例如,下面的ReDim语句将动态数组的初始大小设置为25,而后面的ReDim语句将数组的大小重新调整为30,同时使用Preserve关键字在重新调整大小时保留数组的内容。DimMyArray(25)ReDimPreserveMyArray(30)重新调整动态数组大小的次数是没有任何限制的,但是应注意,将数组的大小调小时,将会丢失被删除元素的数据。,23,例:1+2+3+100相加起来是多少?,3-6.htmSubcalcu()Dimcounter,sumcounter=1sum=0DoWhilecounterclng(form1.text2.value)thenx=form1.text1.valueelsex=form1.text2.valueendifform1.text3.value=xendif,34,输入第一个整数:输入第二个整数:max:,35,采用asp:3-04.asp,输入第一个整数:输入第二个整数:,36,3-04a.asp,求大数:)and(request.Form(text2)thenx=clng(request.Form(text1)y=clng(request.Form(text2)ifx=ythent=xelseifx,37,方法1:采用函数的分支判断:(0186.asp),=60thenexam=考试及格!elseexam=考试不及格!endifendfunctionresponse.Write(张三&exam(70)&)response.Write(李四&exam(59)%,38,方法2:采用#include语句(0186include.asp),无标题文档)response.Write(李四&exam(59)%,39,0186tt.asp,=60thenexam=考试及格!elseexam=考试不及格!endifendfunction%,40,使用vbscript进行客户端验证(validate3.asp),我的留言板Functioncheck_null()IfTrim(document.form1.title.value)=ThenMsgBox主题不能为空ExitFunctionEndIfIfTrim(.value)=ThenMsgBox姓名不能为空ExitFunctionEndIfform1.SubmitEndfunction,41,我的留言板主题:*内容:姓名:*email:,42,方法1:存入数据库表validate:,43,文件名为:validate3_result.asp,44,文件名为:vavalidate3.ado.asp方法2:采用ADO存入数据库:,45,作业:如何显示、查询、编辑、删除数据表内容?,46,使用vbscript进行服务器端验证validate4.asp,我的留言板我的留言板主题:*内容:姓名:*email:,47,Result4.asp:EndIfIfTrim(Request(user_name)=Thenerror_message=用户名不能为空Response.Writeerror_message&EndIfIferror_messageThenResponse.Write请返回重新输入ElseResponse.Write您通过了验证下面可以继续进行各种操作EndIf%,48,SelectCase语句,格式如下:SelectCasetestexpressionCaseexpressionlist-nstatementsnCaseElseexpressionlist-nelsestatements-nEndselect,49,例3-5.htm:本例演示了SelectCase语句的使用方法。,无标题文档subss()DimX,msgX=Form1.Choice.ValueSelectCaseXCase1msg=计算机应用Case2msg=计算机网络技术Case3msg=机械设计Case4msg=电子技术及应用CaseElsemsg=另外一个EndSelectMsgBox你选择的是&msg&专业。,vbOnlyOK+vbInformation,_SelectCase语句应用示例endsub,50,本校开设以下专业:计算机应用计算机网络技术机械设计电子技术及应用请输入你的选择(1-4):,51,随机输出标语:,52,35循环语句,在VBScript中,可以使用下列循环语句。(1)DoLoop语句:当(或直到)条件为True时执行循环体。(2)WhileWend语句:当条件为True时执行循环体。(3)ForNext语句:指定循环次数,使用计数器重复执行一组语句。(4)ForEachNext语句:对于集合中的每项或数组中的每个元素,重复执行一组语句。,53,3.5.1DoLoop语句,DoLoop语句当条件为True时或条件变为True之前重复执行某语句块。根据循环条件出现的位置,DoLoop语句的语法格式分为两种形式。,54,在第1种语法格式中,循环条件出现在语句首部,即DoWhileUntilconditionstatementsExitDostatementsLoop在第2种语法格式中,循环条件出现在语句尾部,即DostatementsExitDostatementsLoopWhileUntilcondition,55,例36编写一个HTML页面,当单击按钮时显示出前100个自然数相加的总和。(3-6.htm),SubbtnShow_onClick()Dimcounter,sumcounter=1sum=0DoWhilecounter,56,想知道1+2+3+100相加起来是多少吗?请单击下面的按钮,57,采用asp:3-6.asp,3-6.asp想知道1+2+3+相加起来是多少,58,59,352WhileWend语句,WhileWend语句当指定的条件为True时执行一系列的语句,语法格式如下:WhileconditionstatementsWend,60,例如,在例36中,DoLoop语句也可以用WhileWend句来代替:Dimcounter,sumcounter=1sum=0WhilecounterHowareyou!,66,3.5.4ForEachNext循环,ForEachNext语句对数组或集合中的每个元素重复执行一组语句,语法格式如下:ForEachelementIngroupstatementsExitForstatementsNextelement,67,例38编写一个HTML页面,当单击按钮时显示出前200个偶数相加的总和。(3-8.htm,3-8.asp)ForEachNext语句应用示例SubAddtion()DimMyArray(100),i,AnyElement,Sumsum=0Fori=0To100MyArray(i)=2*iNextForEachAnyElementInMyArraySum=Sum+AnyElementNextMsgBox2+4+6+200=&Sum&。,vbOnlyOK+vbInformation,ForEachNext语句应用示例EndSub,68,想知道2+4+200相加起来是多少吗?计算结果:,69,如何查看硬盘驱动器属性:(0208.asp),70,盘符类型卷标总计大小可用空间文件系统Response.Write&Drive.DriveLetter&Response.write&Tran(Drive.DriveType)&Response.write&Drive.VolumeName&Response.write&cstr(Drive.TotalSize)&Response.write&cstr(Drive.Availablespace)&Response.write&(Drive.FileSystem)&Response.WriteNextsetfs=nothing%,71,3.6过程,过程是拥有一个并可以作为单元来执行的语句序列。在VBScript中,可以使用两种类型的过程:Sub过程和Function过程,前者也称为过程,后者也称为函数。,72,3.6.1Sub过程,Sub过程是没有返回值的过程,可以用Sub语句来声明其名称、参数以及构成其主体的代码,语法格式如下:PublicPrivateSubname(arglist)statementsExitSubstatementsEndSub,73,其中,Public表示Sub过程可以被所有脚本中的所有其他过程访问;Private表示Sub过程只可以被声明该过程的脚本中的其他过程访问;name指定Sub过程的名称,遵循标准变量命名约定;statements是在Sub过程主体内所执行的任何语句组;使用ExitSub语句可以立即从Sub过程中退出,程序继续执行调用Sub过程的语句之后的语句;arglist代表在调用时要传递给Sub过程的参数的变量列表,用逗号隔开多个变量,arglist参数的语法格式为:ByValByRefvarname()在上述语法格式中,ByVal表示该参数是按值传递的,也就是将参数的值而不是地址传递给过程,并允许过程访问变量的一个副本,但是不能更改变量的实际值:ByRef表示该参数按引用传递,也就是将参数的地址而不是值传递给过程,并允许过程访问和更改实际变量;varname代表参数的变量名称,遵循标准变量命名规则。,74,注意,如果没有显式地指定使用Public或Private,则Sub过程默认为公用,即它们对于脚本中的所有其他过程都是可见的。Sub过程中局部变量的值在调用过程中不被保留。不能在任何其他过程(例如Function)中定义Sub过程。过程可以是递归的,即该过程可以调用自己来完成某个给定的任务。但需要注意的是,递归有可能会导致堆栈溢出。在Sub过程中可以使用两类变量;一类是在过程中显式声明的,另一类是未在过程中显式声明的,这两类变量都是局部变量,除非在该过程外更高级别的位置显式地声明它们。如果过程中引用的未声明的变量与其他的过程、常数或变量的名称相同,则会认为过程引用的是脚本级的名称。要避免这类冲突,请使用OptionExplicit语句强制显式声明变量。使用Call语句可以将控制权传递给Sub或Function过程,语法格式如下:Callnameargumentlist其中,Call是可选关键字,如果指定了此关键字,则必须用括号把argumentlist括起来;name是必选的,用于指定要调用过程的名称;argumentlist是可选的,给出传递给过程的变量、数组或表达式列表,用逗号分隔每一项。在调用过程时,不必使用Call关键字。然而,如果使用Call关键字调用要求参数的过程,则必须用括号将argumentlist括起来。如果省略Call关键字,则必须同时省略argumentlist参数两边的括号。使用Call语法调用内部函数或使用用户自定义函数,函数返回值都会被放弃。当把控制权传递给过程时,会把Sub和EndSub之间的所有语句执行一遍,然后从调用该过程的语句的下一条语句处继续执行。如果在过程中执行了ExitSub语句,则会立即从过程中退出,并继续执行过程调用语句的下一条语句。不过,ExitSub语句通常是与判定结构一起使用的,当某个条件成立时才退出过程。,75,例309编写一个HTML页面,可以在两个文本框中分别输入内容,当单击按钮时交换两者的内容。,无标题文档subswap(x,y)dimtt=x:x=y:y=tendsubsubbutton1_onclick()dima,ba=form1.text1.valueb=form1.text2.valueswapa,bform1.text1.value=aform1.text2.value=bendsub,76,a的内容:b的内容:,77,3.6.2Function过程,Function过程是拥有返回值的过程,可以用Function语句来声明其名称、参数以及构成其主体的代码,语法格式如下:PublicPrivateFunctionname(arglist)statementsnameexpressionExitFunctionstatementsname=expressionEndFunction,78,例310编写一个HTML页面,允许用户在两个文本框中各输入一个整数,当单击按钮时在第三个文本框中显示出最大公约数。,无标题文档functiongcd(x,y)dimrdowhiley0r=xmodyx=yy=rloopgcd=xendfunction,79,subbtnshow_onclick()dima,b,ca=clng(form1.text1.value)b=clng(form1.text2.value)c=gcd(a,b)form1.text3.value=cendsub输入第一个整数:输入第一个整数:求出最大公约数:,80,3.6.3常用内部函数,VBScript提供了大量的内部函数,可以在脚本代码中直接使用这些函数。若要了解这些函数的详细用法,请查阅VBScript语言参考。,81,常用内部函数函数描述Abs返回数的绝对值Array返回含有数组的变体Asc返回字符串首字母的ANSI字符码Atn返回数值的反正切CBool返回已被转换为Boolean子类型的变体的表达式Cbyte返回已被转换为字节子类型的变体的表达式CCur返回已被转换为货币子类型的变体的表达式CDate返回已被转换为日期子类型的变体的表达式CDbl返回已被转换为双精度子类型的变体的表达式Chr返回与指定的ANSI字符码相关的字符CInt返回已被转换为整型子类型的变体的表达式CLng返回已被转换为Long子类型的变体的表达式Cos返回角度的余弦createObject创建并返回对“自动”对象的引用CSng返回已被转换为单精度子类型的变体的表达式CStr返回已被转换为字符串子类型的变体的表达式Date返回当前系统日期DateAdd返回加上了指定的时间间隔的日期DateDiff返回两个日期之间的间隔DatePart返回给定日期的指定部分,82,DateSerial返回指定年月日的日期子类型的变体DateValue返回日期子类型的变体Day返回日期,取值范围为l3lEval计算表达式并返回结果Exp返回e(自然对数的底)的多少次方Filter根据指定的筛选条件,返回含有字符串数组子集的、下限为0的数组Fix返回数的整数部分FormatCurrency返回货币值格式的表达式,其货币符号采用系统控制面板中定义的FormatDateTime返回日期和时间格式的表达式,83,FormatNumber返回数字格式的表达式FormatPercent返回的表达式为百分数(乘以100)格式,后面有符号GetCIbject返回从文件对“自动”对象的引用GetRef返回对能够绑定到一事件的过程的引用Hex返回一字符串,代表一个数的十六进制值Hour返回表示钟点的数字,取值范围为O23InputBox在对话框中显式一提示,等待用户输入文本或单击按钮,并返回文本框的内容InStr返回一个字符串在另一个字符串中首次出现的位置InStrRev返回一个字符串在另一个字符串中出现的位置,但是从字符串的尾部算起Int返回数的整数部分IsArray返回Boolean值,反映变量是否为数组,84,IsDate返回Boolean值,反映表达式能否转换为日期IsEmpty返回Boolean值,反映变量是否已被初始化IsNull返回Boolean值,反映表达式是否含有无效数据NullIsNumeric返回Boolean值,反映表达式能否转换为数字IsObiect返回Boolean值,反映表达式是否引用了有效的“自动”对象Join返回通过连接许多含有数组的子串而创建的字符串LBound返回指定维数数组的最

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论