270 likes | 453 Views
第 3 章 ASP 脚本语言 —— VBScript. 重点内容: 数据类型及运算符 变量与常量 常用函数 VBScript 语句 过程和自定义函数 对象编程. 一、 VBScript 概述.
E N D
第3章 ASP脚本语言——VBScript • 重点内容: • 数据类型及运算符 • 变量与常量 • 常用函数 • VBScript语句 • 过程和自定义函数 • 对象编程
一、VBScript概述 VBScript(Microsoft Visual Basic Scripting Edition)是程序开发语言 Visual Basic 家族的最新成员,是一种基于对象的编程语言。用户在HTML文件中可直接嵌入VBScript脚本,从而扩展HTML,使其不仅仅是一种页面格式语言,而且还可以对用户的操作做出反应。脚本语言是用来控制网页的控件和对象的一种编程语言,用其加强网页的灵活性和多样性。VBScript作为目前流行的脚本语言,是ASP的宿主语言,为Microsoft所推荐。它以其简单的语法、完善的功能,既可作为客户端编程语言,也可作为服务器端编程语言。 VBScript既可作为客户端编程语言,也可作为服务器端编程语言。客户端脚本由一个配备了解释器的Web浏览器处理,当一个浏览器的用户执行了一个操作时,不必通过网络对其做出响应,客户端程序就能完成任务。而服务器端脚本则是在Web服务器上执行生成代码,然后发送到浏览器,在浏览器上收到的只是执行后的标准HTML文件。不管在客户端执行还是在服务器端执行,其语句的声明均放入<script>……</script>标记中。
二、VBScript数据类型及运算符 1、数据类型 在Visual Basic等高级程序设计语言中,有整型、字符型、数值型等多种不同的数据类型,而在VBScript中只有一个叫做Variant(一般译为“变体型”)的数据类型。随着使用方式的不同,Variant可以包含不同类型的信息,即这种数据类型可以根据用途的需要选择最合适的子类型来存储数据。
二、VBScript数据类型及运算符 2、VBScript的运算符 VBScript的运算符包括算术、字符串(连接)、逻辑和比较4种运算符。 1. 算术运算符 除了加(+)、减(-)、乘(*)、除(/)外,还有经常使用的取余(Mod)、求幂(^)及整除(\)等。如:5 Mod 3,结果为2;5 ^ 3结果为125;5 \3结果为1。 2. 字符串(连接)运算符 有“&”或“+”两种,用于将两个字符串进行连接。在使用时,经常用“&”,因为连接符“+”与算术运算符中的加号“+”类似,所以当表达式两边都是数值时,则根据运算符的优先级会将“+”默认为表示相加。 3. 逻辑运算符 最常用的有与(And)、或(Or)、非(Not)三种,用于判断表达式是否成立,其返回值为:真(True)或假(False)。 (1) And:只有两个值全为真时,结果才为真。如(5>3)And(5>10),表达式的值为:False。 (2) Or:只要有一个值为真时,结果就为真。如(5>3)Or(5>10),表达式的值为:True。 (3) Not:非真则为假,非假则为真。如Not(5>3),结果为:False;Not(5>10),结果为:True。 4. 比较运算符 最常用的有等于(=)、不等于(<>)、小于(<)、大于(>)、小于等于(<=)、大于等于(>=)6种,用于将表达式两边的值做出比较,其返回值为:真(True)或假(False)。
二、VBScript数据类型及运算符 2、VBScript的运算符 当一个表达式中包含有多种运算符时,就必须遵守一个优先级的规则,即先算术,后比较,再逻辑。
三、VBScript变量与常量 1、变量的声明与赋值 变量和常量是编程语言最基本的组成单位,由变量和常量组成表达式,然后由表达式组成更为复杂的程序。变量是代表能够存储程序信息的计算机内存的位置的符号,在程序的运行过程中可以进行调用变量或者改变变量值等操作。并不需要知道具体的变量在内存中的地址,只需要调用变量名就可以实现对变量的引用。如前所述,VBScript中的数据类型只有Variant一种,所以变量的类型也都是Variant类型的。 命名变量就是为变量取个名字。变量名称要遵循VBScript命名的标准规则:必须以字母开头,不能包含句点,长度在255个字符内且在其作用域内必须是惟一的。 在VBScript中声明变量要用到Dim,语法结构为: dim 变量名1,变量名2,变量名3,变量名n 声明一个或多个变量,在声明多个变量时用“,”分割变量名 当变量定义好后,就可以给变量赋一个值,语法结构为: 变量名=值 将“值”赋给变量名。
三、VBScript变量与常量 2、数组的定义 一个变量如果包含多于一个的相关数值,就称为数组。数组的定义与变量一样,使用Dim,只是将元素的个数即数组的大小包含在数组名称之后的括号里。 一维数组 二维数组 动态数组 定义元素
三、VBScript变量与常量 3、定义常量 常量的值,在程序中是不变的,其命名规则与变量的命名规则一样。在VBScript中定义常量使用Const语句,语法结构为: const 常量名=值 将值赋给常量名,如: const a="星期一" '字符串常量,必须用双引号(" ")括起来 const a=30 '数值常量 const a="---" '字符串常量 const a=#30/8/2005# '日期常量,必须用井号(#)括起来
四、VBScript常用函数 1、数字运算函数 取绝对值 四舍五入 格式:Abs(<数值表达式>) 功能:返回数值表达式的绝对值。如果输入的数值大于等于零,返回的数值就会等于输入的数值;相反小于等于零,则会去掉负号输出,如: Abs(5)=5 Abs(-5)=5 Abs(0)=0 格式:CInt(<数值表达式>) 功能:将表达式的值的小数部分四舍五入后,返回一个整数值,如: CInt(5.2)=5 CInt(5.6)=6 取整 开平方 格式:Int(<数值表达式>) 功能:返回数值表达式值的整数部分,如: Int(5.2)=5 Int(5.6)=5 格式:Sqr(<数值表达式>) 功能:返回数值表达式值的平方根。要求数值表达式的值大于等于0,如: Sqr(16)=4 Sqr(23)=4.79583152331272
四、VBScript常用函数 2、字符串函数 字符串长度检测 截取字符串 格式:Len(<字符串表达式>) 功能:检测字符串表达式的长度,并返回一个整数值,如: Len("1234") 结果为:4 Len("计算机") 结果为:3 Len("VBScript函数") 结果为:10 左截取:Left(<字符串表达式>,<截取的位数值>) 右截取:Right(<字符串表达式>,<截取的位数值>) 中间截取:Mid(<字符串表达式>,<从第几位>,[截到第几位止]) 如: Left("VBScript函数有哪些",5) 结果为:VBScr Right("VBScript函数有哪些",5) 结果为:函数有哪些 Mid("VBScript函数有哪些",5) 结果为:ript函数有哪些 Mid("VBScript函数有哪些",5,9) 结果为:ript函 大小写转换 小写转大写:Ucase(<字符串表达式>) 大写转小写:Lcase(<字符串表达式>) 如: Ucase("AbcdEfg") 结果为:ABCDEFG Lcase("AbcdEfg") 结果为:abcdefg 去除字符串中的空格 左边空格:Ltrim(<字符串表达式>) 右边空格:Rtrim(<字符串表达式>) 两端空格:Trim(<字符串表达式>) 如: Ltrim(" 先生 ") 结果为:“先生 ” Rtrim(" 先生 ") 结果为:“ 先生” Trim(" 先生 ") 结果为:“先生”
四、VBScript常用函数 3、日期函数 (1) 取系统当前的日期:Date (2) 取系统当前的时间:Time (3) 取系统当前的日期及时间:Now 如: document.write(Date) 结果为:2005-7-12 document.write(Time) 结果为:16:27:42 document.write(Now) 结果为:2005-7-12 16:28:18
四、VBScript常用函数 4、数据类型转换函数 数字转换成字符串 转换成数字 格式:Str(<数值表达式>) 功能:将数值表达式表示的数字转换成字符串,如: Str(80) 结果为:“80” Str(-80.12) 结果为:“-80.12” 格式:Val(<字符串表达式>) 功能:将字符串表达式表示的字符串内的字符型数字转换成数值型数字,如: Val("222永州") 结果为:222 Val("2.5 78") 结果为:2.578 转换为日期型数据函数 字符转换成字符代码 格式:Cdate(<表达式>) 功能:按表达式的值返回日期型数据,表达式是任何能有效地表示日期的表达式,如数值表达式,字符串表达式,日期表达式。 (1) 整数:当输入的参数为一个整数时,除了0会输出时间外,其他的情况都会输出与“1899-12-30”这天相差的天数,如: Cdate(0) 结果为:0:00:00 Cdate(1) 结果为:1899-12-31 Cdate(2) 结果为:1900-1-1 (2) 小数:当输入的参数为一个带有小数的数字时,将整数部分转换为日期,小数部分转换为从午夜起算的时间。如: Cdate(1.1) 结果为:1899-12-31 2:24:00 格式:Asc(<字符串表达式>) 功能:返回一个整型数,代表字符串表达式表示的字符串首字母的字符代码,如: Asc("A") 结果为:65 (即大写字符A的ASCII码) 字符代码转换成字符 格式:Chr(<字符代码>) 功能:返回与指定的字符代码相关的字符,如: Chr(97) 结果为:a (即在ASCII码中的小写字符a) Chr(13) 结果为:回车符 (即在ASCII码中的回车符)
四、VBScript常用函数 5、其他函数 产生输入框 产生选择框 用来产生一个接收用户输入信息的输入框。 格式1:Inputbox(" [提示信息] ") 如: Inputbox(“请输入您的姓名:”) 格式2:Prompt(" [提示信息]") 如: Prompt("请输入您的姓名:") 格式1:Confirm(" [提示信息] ") 功能:用来产生一个选择框,等待用户做出选择。 如: Confirm("是否真的这样选?") 格式2:MsgBox("<提示信息>,[数值] ") 功能:用来产生一个选择框,等待用户做出选择。不同的返回值表示用户按下了不同的按钮。 <提示信息>参数为必选项,是作为消息显示在对话框中的字符串表达式。其最大长度,大约是1 024个字符,这取决于所使用的字符的宽度。 [数值]为数字,可选,表示指定显示按钮的数目和类型、使用的图标样式,默认按钮的标识及消息框样式的数值的总和。如果未指定,则默认值为0,表示只显示一个“确定”按钮;指定1,表示显示“确定”、“取消”两个按钮;指定2,表示显示“终止”、“重试”、“忽略”3个按钮;指定3,表示显示“是”、“否”、“取消”3个按钮;指定4,表示显示“是”、“否”两个按钮;指定5,表示显示“重试”、“取消”两个按钮。 产生提示框 格式:Alert(" [提示信息] ") 功能:用来产生一个弹出式的警告框,其图标为一个警告标识。如: alert("恭喜您通过!")
五、VBScript语句 1、条件语句 选择结构是一种可以根据条件实现程序分支的控制结构。其特点是,根据所给定的选择条件为真(即条件成立)或为假,而决定从各分支中执行某一分支的相应操作,并且在任何情况下均有“无论分支多寡,必择其一;纵然分支众多,仅选其一”的特性。选择结构是通过条件语句来实现的,条件语句也称if语句。 判断用户输入的口令字是否正确 If…Then...Else…End if 格式:if <条件> then [命令1] else [命令2] end if 功能:如果条件成立,执行Then后的命令;反之,如果条件不成立,执行Else后的命令。 <html> <body> <script language="vbscript"> dim hd mm="1234" hd=inputbox("请输入你的密码:") if hd<>mm then alert("你的密码不正确!") else alert("密码正确,欢迎你的光临") end if </script> </body> </html>
五、VBScript语句 1、条件语句 If…ElseIf…End if <html> <body> <h2>根据不同的考试成绩确定等级</h2> <script language="vbscript"> dim cj cj=inputbox("请输入你的考试成绩:") if cj<60 then alert("等级评定为:差") elseif cj>=60 and cj<80 then alert("等级评定为:中") elseif cj>=80 and cj<90 then alert("等级评定为:良") elseif cj>=90 and cj<=100 then alert("等级评定为:优") else alert("你输入的成绩有问题!") end if </script> </body> </html> 格式:if <条件1> then [命令1] [elseif <条件2> then 命令2] [elseif <条件3> then 命令3] …… [else 命令n] end if
五、VBScript语句 1、条件语句 在多个条件中进行选择的更好方法是使用Select case…End select语句。 格式:Select case <测试表达式> [case <表达式表1> [命令1]] [case <表达式表2> [命令2]] … [Case else [命令n]] end select select case cj case 50 alert("等级评定为:差") case 70 alert("等级评定为:中") case 80 alert("等级评定为:良") case 90 alert("等级评定为:优") case else alert("你输入的成绩有问题!") end select
五、VBScript语句 2、循环语句 循环结构是一种可以根据条件实现程序循环执行的控制结构,一般有当型循环和直到型循环两种结构,其他循环结构可以看作这两种结构的变型。 (1) 当型(While)循环:当给定条件为True时,重复执行语句;否则循环语句停止执行,而执行下面的语句。 (2) 直到(Until)型循环:一直重复执行一组语句,直到给定的条件为True时停止,然后执行下面的语句。 (3) 变形体(For)循环:将一组语句按照指定的循环次数重复执行后,再执行下面的语句。
五、VBScript语句 2、循环语句 Do…Loop
五、VBScript语句 2、循环语句 For Each…Next For…Next For Each...Next语句是对数组中的每个元素或对象集合中的每一项都执行一组相同的操作。如果不知道数组元素或对象集合中项目的具体数目时,For Each...Next尤其有用。其语句格式为:
六、VBScript过程和自定义函数 1、Sub子过程 Sub子过程的格式为: 定义过程:Sub <子过程名><([形式参数])> [命令] End Sub 调用过程:Call <子过程名>[([实际参数])] <html> <head> <script language="vbscript"> sub xm() '定义xm过程,无参数。注:无参数也必须加上() dim name name=prompt("请输入您的姓名") document.write("欢迎您," & name & "!" & "<p>") end sub sub pf(a) '定义pf过程,参数为a dim s s=a*a document.write("A的平方=" & s) end sub </script> </head> <body> <script language="vbscript"> call xm '调用xm过程 a1=prompt("请输入A值:") call pf(a1) '调用pf过程,并将实际参数a1的值传递给形式参数a </script> </body> </html>
六、VBScript过程和自定义函数 2、Function函数 Function函数的格式为: 定义函数:Function <函数名><([形式参数])> [命令] End Function 调用函数:<函数名>[([实际参数])] <html> <head> <script language="vbscript"> function s(bc) '定义s函数,参数为bc s=bc*bc end function </script> </head> <body> <script language="vbscript"> b=inputbox("请输入正方形的边长:") document.write ("<font size=5 color=blue>正方形的面积为:</font>") '以下s(b)为调用s函数,并将实际参数b传递给了形式参数bc document.write (s(b)) </script> </body> </html>
六、VBScript过程和自定义函数 3、变量的作用域和生存期 细心的读者可能已发现,在本章的例题中均使用到了变量,有些例题在使用变量时首先用Dim进行了定义,而有些例题却没有给变量定义。变量能否不定义就使用或者在程序中的哪处定义,都与变量的作用域有关。变量的作用域是指变量所起作用的范围,变量声明的位置不同,其作用域也不同。如果一个变量在过程内声明,则称其为局部变量,因为它只能在这个过程中使用,用于在过程中临时存放数据。如果一个变量在过程外声明,则称其为全局变量,它不仅可在过程内使用,也可在过程外使用(即整个程序中使用),用于存放整个应用程序公用的数据。变量的生存期指变量的存活期。对于全局变量,其生命周期是从它被声明起一直到整个脚本运行结束才结束;而对于局部变量,其生命周期是从过程或函数被执行的时刻开始到过程或函数执行结束。所以,局部变量是用于存取临时数据的。
七、使用VBScript对象编程 1、Document对象 Document是使用最多的一个对象。文档就是在浏览网页时所看到的页面,包括其中的文本、链接和表单等。
七、使用VBScript对象编程 2、Window对象 Window对象即浏览器窗口。浏览一个页面时,就打开了一个Window对象。
八、综合实例 在打开页面时弹出一个空白的小窗口 <html> <head> <script language="vbscript"> function openwin() setOpenWindow=window.open("gg.htm","new","height=60,width=300,toolbar=no,status=no,menubar=no,scrollbars=no,resizable=no") '注意写在一行 end function </script> </head> <body onload=openwin()> </body> </html> 在图上可看到弹出了一个300×60大小的小窗口。“gg.htm”为弹出的小窗口里所要显示的网页,此处gg.htm文件为空白的页面。toolbar、status、menubar、scrollbars等参数可设置小窗口的工具栏、状态栏、菜单栏及滚动条的有无;resizable设置是否可让浏览者改变小窗口大小;width、height设置小窗口的宽度及高度。
八、综合实例 根据不同时间显示不同问候信息 <script language="vbscript"> dim i i=hour(time()) if i>=0 and i<6 then document.write("凌晨好!") end if if i>=6 and i<8 then document.write("早上好!") end if if i>=8 and i<12 then document.write("上午好!") end if if i>=12 and i<18 then document.write("下午好!") end if if i>=18 and i<24 then document.write("晚上好!") end if </script> 程序中用到VBScript中日期函数。Time()取系统当前的时间;Hour()取出时间的小时数,若当前时间为19:01:22,经i=hour(time())后,i的值为19。
八、综合实例 状态栏走马到成灯效果 设置浏览器状态栏上的文字在Web页面上经常可见,下面例子将会在状态栏上显示当前时间,并一秒一秒地不间断走。 <script language="vbscript"> sub change() status="现在时间:" & time() settimeout "change()",1000 end sub sub window_onload() change end sub </script>