华东理工大学动态网页设计第3章.docx
- 文档编号:9972566
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:41
- 大小:218.53KB
华东理工大学动态网页设计第3章.docx
《华东理工大学动态网页设计第3章.docx》由会员分享,可在线阅读,更多相关《华东理工大学动态网页设计第3章.docx(41页珍藏版)》请在冰豆网上搜索。
华东理工大学动态网页设计第3章
第3章VBScript的控制结构
上一章所用的各范例中的脚本大部分都是相当简单的。
因为它们都是从上到下顺序执行的,总是终止于最后一行,要想再次执行,必须从头开始。
但实际上,一般脚本程序不会都那么简单,它们往往包含一些根据不同的情况选择执行的语句,以及根据某些条件重复执行的语句。
为了能实现这样的功能,VBScript中设置了相应的流程控制语句,控制程序的执行。
本章主要讨论VBScript中常用的几种控制结构,具体包含以下内容:
●条件语句If…Then
●多分支语句SelectCase
●计数式循环For…Next
●集合元素循环Foreach
●条件式循环While和Do…Loop
3.1条件语句If…Then
这是最常用的语句,照字面上的意思翻译过来也相当简单,就是“如果…就”。
日常生活中也常常会用到这种句子,例如:
要买一片CD,当店员告诉我们价钱时,我们就要决定是否要买。
因此我们可以在购买前先设置一个条件:
如果CD的价格在300元以下(含300元)就买;否则就不买。
将这种情况转换为计算机语言程序,表示形式如下:
IfCD价格<=300Then买Else不买
在VBScript脚本语言中,If…Then的语句有多种格式,我们以下分别进行讨论。
3.1.1If的第一种格式:
如果…就…(单一选择)
格式如下:
If条件Then语句组
这是If指令最简单的格式“单一选择”,其中的“条件”是一个表达式,它所计算的结果必须是一个逻辑数据,如果“条件”的计算结果是“TRUE”,那么就会执行Then后面的“语句组”:
如果“条件”的计算结果是“FALSE”,那么就会跳过整个If语句,而不会执行Then后面的“语句组”。
如果Then后面的“语句组”较长,不便于写在同一行,可以另起一行书写,并在最后加上EndIf以结束If条件语句。
形式如下:
If条件Then
语句组
EndIf
【例3-1】简单的If语句
图3-1条件满足时显示的消息框
--
Score=70
IfScore>=60ThenMsgBox"及格!
"
-->
上述代码演示了“If…Then”的基本用法,首先将表示分数的变量Score赋值为70,接下来就判断这个变量的值是否大于60(表示是否及格),若大于等于60,则显示消息框“及格”,这里由于70>60,所以显示如图3-1所示。
如果不满足这个条件,则什么也不做。
代码中的“Score>=60”表示分数高于或等于60,如果这个表达式的值为真,表示条件成立,则执行Then后的语句,显示出信息框;如果表达式的值为假,也就是条件不成立,则跳出If语句,执行If语句之后的语句。
读者也可以试着把“Score=70”这行改成“Score=50”,看这样执行时又会产生什么不一样的结果。
在If语句的格式中,Then后面可以写多个语句,如:
Ifx>3Theny=1:
z=2
这时,可以把If语句写成如下形式:
Ifx>3Then
Y=1
Z=2
EndIf
注意:
形式中EndIf不能省。
另外,若把上述形式写成如下:
Ifx>3ThenY=1
Z=2
EndIf
将产生错误。
由于浏览器环境下系统不显示错在哪里,因此,对于这样的问题应特别小心。
当然,你可以借助像FrontPage这样的编程环境来帮助查找脚本的中错误。
3.1.2If的第二种格式:
如果…就…否则…(双向选择)
格式如下:
If条件Then
语句组一
Else
语句组二
EndIf
这个格式跟前一个格式不同的地方是多了Else部分,意思就是说如果上面的条件没有产生“TRUE”的话,那就执行Else后面的“语句组二”,所以叫作双向选择,他比前一个格式又多了一种变化,请看下面的范例。
【例3-2】双向选择
--
Score=InputBox("请输入计算机成绩:
","输入成绩")
IfScore>=60Then
Msg="及格!
"
Else
Msg="不及格!
"
EndIf
MsgBox"你的计算机成绩"&Msg
-->
为了验证本例中的代码,你应首先输入代码并保存成一个HTML文件,双击该文件图标后,将显示如图3-2所示输入框,若此时输入“87”,按“确定”按钮,将显示及格信息,如图3-3所示
图3-2成绩输入框图3-3显示及格提示
若输入“48”,如图3-4所示,按“确定”按钮,会显示不及格信息,如图3-5所示。
图3-4在输入框中输入数据图3-5显示不及格提示
本例代码中的If语句也可写在同一行,形式如下:
IfScore>=60ThenMsg=“及格!
”ElseMsg=“不及格!
”
但是,如果写成以下形式,则是错误的。
IfScore>=60ThenMsg=“及格!
”
ElseMsg=“不及格!
”
即使再加上EndIf,也是错误的。
另外,格式中,条件满足时执行的语句和条件不满足时执行的语句都可以是另外一个条件语句,这时,就构成所谓的条件的嵌套。
3.1.3If的第三种格式:
多向选择
当有多种情况需要进行分别处理时,可以使用如下格式的If语句:
If条件1Then
语句组1
Elseif条件2
语句组2
Elseif条件3
语句组3
……
……
Else
语句组N+1
EndIf
前面介绍的两种If语句都只能处理一个条件,而此格式可以同时处理许多条件。
程序执行时,先检查“条件1”,若返回值为“TRUE”,则执行“语句组1”,然后跳到EndIf的下一个指令;若“条件1”的返回值为“FALSE”,则检查“条件2”,若返回值为“TRUE”,则执行“语句组2”,再跳到EndIf的下一个指令,否则检查“条件3”,依此类推。
若所有条件都不成立,则执行Else后的“语句组N+1”。
这里,“语句组1”至“语句组N+1”只有一个会被执行。
这种程序逻辑翻译成一般用语就是“如果…就…否则如果…就…否则…”。
【例3-3】使用多种条件
--
Score=InputBox("请输入计算机成绩:
","输入成绩")
IfScore>=90Then
Msg="优等"
ElseIfScore<90AndScore>=80Then
Msg="甲等"
ElseIfScore<80AndScore>=70Then
Msg="乙等"
ElseIfScore<70AndScore>=60Then
Msg="丙等"
Else
Msg="丁等"
EndIf
MsgBox"你的计算机成绩为"&Msg
-->
执行本例中的代码时,若输入“99”,然后按“确定”,会显示“优等”,如图3-6。
图3-7所示。
图3-6输入框图3-7显示等第
若输入“46”,然后选取“确定”,则会显示“丁等”。
上例中是对输入的一个数进行一系列判断,而实际上,当你浏览各种网页时,很少见到这样的输入框。
那么条件语句用在哪里呢?
请看另外一个例子。
【例3-4】根据时间不同显示不同的问候信息
DimiTime
Dimstrmsg
iTime=HOUR(TIME)
IfiTime<3then
strmsg="凌晨了,还没睡,小心身体噢。
"
elseIfiTime<7then
strmsg="起这么早?
"
elseIfiTime<12then
strmsg="上午好。
"
elseIfiTime<18then
strmsg="下午好。
"
else
图3-8不同时间的问候
strmsg="晚上好,吃过晚饭了?
"
endIf
msgboxstrmsg
随时间变化的问候。