第 5章 在 ASP中使 JavaScript
本章要点,
l JavaScript的变量和函数
l JavaScript中的运算符
lJavaScript中的对话框
l JavaScript中的条件语句和循环语

JavaScript与 VBSsript一样, 都是
脚本语言, 但是 JavaScript的杰出之处
在于可以用很少的程序做大量的事, 代
码效率高, 功能强大 。 随着 ASP技术的出
现, JavaScript已把它的功能扩大到服
务器上 。
JavaScript代码嵌套在 HTML标记符
中, 在 HTML页面上操纵, 处理, 控制对
象, 根据用户的行为执行相应的操作 。
5.1 基本概念
5.1.1 变量
在一个程序的执行过程中,可以改
变或者说可以重新赋值的量称之为变量。
例如,一个存储用户访问站点次数的量。
变量的定义或者声明以及变量的作用域
都有严格的规定和使用方法。明确定义
变量以及对其作用域的清晰认识,将有
助于用户的编程过程更为流畅,并可使
用户在调试过程中避免很多麻烦。
JavaScript中变量的类型没有限制,
所有的数值都会被认为是浮点数, 同时
JavaScrip也支持字符串 。
JavaScript变量可存在于两个作用域
上:全局变量, 定义在页面的函数外部,
可以被各个函数使用, 也就是说, 它的作
用范围贯穿页面的始终 。
局部变量是在函数内部设置的, 所以
它的作用范围被限制在定义它的函数内 。
5.1.2 函数
JavaScript是面向对象的语言,采用
事件驱动的方法。例如,在页面上有一
个按钮,通过鼠标单击按钮,显示一些
信息或者进入另一个页面等。这是因为
单击该按钮时,就会触发该按钮的 Click
事件,执行该事件中的代码。这段代码
通常称为, 事件, 。事件一般具有如下
格式,
Function 对象名称 _事件名称 ()
{
//处理事件的代码
}
对象名称就是在页面上放置对象时为其设
置的 Name参数的值 。
事件名称比较常用的有 Click( 用鼠标单
击对象 时触发),Dbclick( 用鼠标双击
对象时触发)等。
函数和事件很相似,但它不是由对象的事
件触发的,而是通过调用函数来执行函数
内的代码,并把执行的结果返回。
5.1.3 客户端和服务器端脚本
1,客户端和服务器端
前面说过, JavaScript脚本嵌套在
HTML文档中, 既可以在客户端执行,
也可以在服务器端执行 。
在客户端执行, 就是将脚本代码下
载到客户的浏览器中, 在客户的计算机
上执行;在服务器端执行, 代码并不下
载到客户的浏览器上, 全部在服务器上
执行 。
JavaScript脚本在服务器端执行, 则不必
考虑用户使用的是什么样的浏览器, 数据的
计算等都是在服务器上完成, 减轻了客户浏
览器的负担, 提高了交互的速度 。 而且, 代
码不传到客户的浏览器上, 避免源程序被复
制, 从而提高了程序的安全性 。
2,客户端和服务器端句法
JavaScript代码嵌套在 HTML文档中, 需
要让计算机区分出程序代码和 HTML文档,
以及代码是在服务器端还是在客户端运行 。
SCRIPT标记可以完成这种功能。将
JavaScript客户端代码放置在 <SCRIPT>和
</SCRIPT>标记之间,其格式如下,
<SCRIPT LANGUAGE=javascript>
代码
</SCRIPT>
其中, LANGUAGE参数指定所使用的编程
语言 。 下面介绍代码在服务器端执行的格
式 。
使用 SCRIPT标记指定代码在服务器端
的格式如下,
<SCRIPT LANGUAGE=javascript Runat = "Server">
代码
</SCRIPT>
如果代码是零零散散的, 可以将代码包
含在 <%… %>标记里面, 其格式如下,
<% 代码 %>
使用 <%… %>标记指定编程语言的格式
如下,
<% @ LANGGUAGE=javascript %>
5.2 变量的声明
变量是 JavaScript语言的基础,任何
一种编程语言都使用变量,一个变量可
以用来暂时存储数据。变量通过变量名
来访问和识别。
Var语句用来声明变量,并且无需指
明变量的数据类型,因为 JavaScript中不
区分数据类型,所有的类型转换操作都
是自动完成的。
使用 var语句的格式如下,
var 变量名称;
例如,
var var1;
var var2;
也可以使用如下格式一次声明多个变量,
var 变量名称 1,变量名称 2,……, 变量名称 N;
var语句还可以声明数组, 声明一维数组
的格式如下,
var 数组名称= new Array();
var 数组名称= new Array(数组元素 1,数组元素 2,…,数组元素 N);
var 数组名称= new Array(数组元素数目 );
var 数组名称= [数组元素 1,数组元素 2,…,数组元素 N]
5.3 运算符
不同的运算符代表了不同的运算功
能,程序在运行过程中会按照给定的运
算符进行操作,运算符主要包括以下几
类,
l 赋值符:在 JavaScript中,,=” 为
赋值运算符。
l算术运算符,+(加),-(减),*
(乘),/(除)、和 %(求余)。
l 关系运算符,==( 等于 ), !=( 不等
于 ), >(大于 ),<(小于 ),>=( 大于或等
于 ), 和 <=( 小于或等于 ) 。
l 逻辑运算符,&&(与),||(或),!
(非)。
5.3.1 赋值运算符
, =” 为赋值运算符, 它将, =” 右边
的值 ( 内容 ) 赋给左边的变量 。 可以用赋值
运算符来设置变量的值 。
5.3.2 算术运算符
JavaScript提供了十分完备的数学运算
功能, 下面分别介绍各算术运算符 。
1,加法和减法
( 1) + ( 加号 ), 执行加法运算 。
( 2)-(减号),执行减法运算。
在 JavaScript中, 加法有以下操作规则,
l 数字和数字相加, 结果为数字相加之和 。
l 字符串和字符串相加, 结果为两个字符
串连接起来 。
l 字符串和数字相加, 则将数字转换为字
符串进行加法运算
2,乘和除
JavaScript中使用, *” 执行乘法运算,
它的使用格式如下,
Results= Number1*Number2
Number1和 Number2可以是各种类型的数值
型数据。
JavaScript中有两种除法运算:除和取模 。
( 1), /” ( 除 ) 执行除法运算 。 它的使用
格式如下,
Results= Number1/Number2
( 2), %, ( 取模 ) 对两个数做除法,
返回余数 。 它的使用格式如下,
Results= Number1% Number2
Number1和 Number2可以为任何的数值变
量。
5.3.3 关系运算符
1,关系运算符简介
在编程过种中常常需要对表达式进行
关系比较,JavaScript提供了丰富的关
系比较运算符。经过运算符运算之后,
返回布尔型值 true( 真)或 false( 假)。
关系运算符有以下几种,
l == 测试运算符两边是否相等, 相等结
果为 true,不相等则为 false,
l != 测试运算符两边是否不等, 不相等
结果为 true,相等则为 false,
l > 测试运算符左边是否大于右边, 大
于结果为 true,否则为 false,
l < 测试运算符左边是否小于右边, 小
于结果为 true,否则为 false,
l >= 测试运算符左边是否大于或等于右边,
大于或等于结果为 true,否则为 false,
l <= 测试运算符左边是否小于或等于右边,
小于或等于结果为 true,否则为 false,
2.关系运算规则
关系运算符和算术运算符一样,存在着
数据子类型的变换问题。一般有以下规则,
l 参与比较的表达式均为数值时, 遵循
数值比较规则 。
l 参与比较的表达式均为字符串时, 遵
循字符串比较规则 。
l 参与比较的表达式一个为字符, 一个
为数值时, 则将字符串表达式转换为数
值表达式再进行比较 。
5.3.4 逻辑运算符
逻辑运算符可以用来描述逻辑问题和逻
辑运算 。 在程序中的一系列条件或条件的组
合, 就是通过逻辑运算来达到目的的 。
在介绍各种逻辑运算符之前,有必要说
明一点,对于数值变量或表达式,只要不为
0,在进行逻辑运算时,就将其视为 1
( true); 如果为 0,则视为 0( false);
逻辑运算的各种符号包括,
l !( 逻辑非 )
l &&( 逻辑与 )
l ║ ( 逻辑或 )
( 1) ! 运算符
功能:将运算结果右边的表达式取反 。
格式,
Results=!(表达式 );
! 运算符对于简单的求反运算非常有用, 它
一般出现在一个式前, 例如,
a!=b;
如果表达式 b结果为 true( 非 0), 则 a为
false; 如果表达式 b结果为 false,则 a为 true。
( 2) && 运算符
功能:只有运算符两边的表达式都为 true
( 非 0) 时, 结果才为 true,否则结果为 false。
格式,
Results= (表达式 1)&& (表达式 2);
&&运算符是一个双目运算符, 即要求有
两个操作数 ( 和算术运算符一样 ), 而前
面讲的 !运算符是单目运算符 。 只有两个表
达式均为 true时, Results才为 true.。 例如,
c= a&&b;
当 a和 b均为 true( 非 0) 时, c才为 true( -
1) ; 如果 a和 b中的任一个为 false,则 c为
false。
( 3) || 运算符
功能:当运算符两边的任一边为 true时, 结
果就为 true。
格式,
Results= (表达式 1)║ (表达式 2);
║运算符用于连接两个逻辑表达式, 如果任
意一个表达式为 true,则结果为 true。 例如:
c= a║ b;
当 a和 b均为 false时, c才为 false; 如果 a
和 b中任一个为 true,或 a和 b都为 true,则 c为
true。
5.3.5 连接字符串
JavaScript中使用 + 运算符来实现字符串的连
接, 例如,
程序 sample5-10.html
<% @ Language=JavaScript %>
<HTML>
<HEAD>
<SCRIPT LANGUAGE=javascript>
<!—
var a,b,c;
a="111";
b=222;
c="222";
document.write(a+b);
document.write("<br>");
document.write(a+c);
//-->
</SCRIPT>
</HEAD>
<BODY >
</BODY>
</HTML>
5.3.6 运算符的优先级
前面讲过的算术运算符, 关系运算符,
逻辑运算符的优先级的顺序是按算术运
算符, 关系运算符, 逻辑运算符进行的 。
例如,
a+b>c+d;
相当于,
(a+b)>(c+d);
因为算术运算符的优先级高于关系
运算符, 所以先执行算术运算 。
在每一类运算符的内部, 各种运算
会又有不同的优先顺序 。 在算术运算符
中, 优先级由高到低分别为,
l 乘法和除法 ( *,\) 和取模 ( % ) 。
l 加法和减法 ( +, - ) 。
l 关系运算符的优先级由高到低分别
为,
l 小于 ( <), 小于或等于 ( <=) 。
l 大于 ( >), 大于或等于 ( >=) 。
l 等于 ( = =),
l 不等于( <>),
逻辑运算符的优先级由高到低分别为,!
> && >║
在使用的过程中, 可以通过小括号来
改变运算的顺序 。
5.4 语句
前面讨论了 JavaScript的变量和运算符,
这一节将介绍更为复杂一点的控制程序
流程的语句,主要有,
l if语句 。
l switch语句 。
l for语句 。
l while语句 。
l do… while语句 。
l with语句 。
在分别介绍这几种语句之前,由于在
示例中要多次用到消息框和输入框,所
以首先介绍一下消息框和输入框。
5.4.1 对话框
1,警告框
警告框用来把警告, 错误或者提示信息
显示给用户, 警告框通常只有一个, 确
定, 按钮 。 显示警告框的格式为,
window.alert(string);
string参数是警告框显示的内容 。
2,确认框
windows对象的 confirm方法可以显示
一个确认框, 把提示信息显示给用户, 确
认框有, 确定, 按钮和, 取消, 按钮 。 如
果用户选择, 确定, 按钮, 那么 confirm方
法返回 true,否则返回 false。
显示确认框的格式为,
window.confirm(string);
string参数是确认框显示的内容。
3,输入框
输入框用来接收来自用户的输入 。 显示
输入框的格式为,
window.prompt([message],[defstr]);
message参数显示输入框中提示信息,
defstr参数设置显示在输入框的文本框中默
认数值 。
5.4.2 条件语句
1,if语句
这是一种最基本的判定方法, if语句的
格式如下,
if 判定条件
{
程序代码
}
2,If… else语句
该语句是 if语句功能的扩充, 它的使用
格式如下,
if 判定条件 {
程序代码 1
}
else{
程序代码 2
}
表示如果判定条件成立, 那么就执行程
序代码 1;如果条件不成立, 那么, 执行程
序代码 2。
在 if语句中的示例, 可以不用两个 if语
句, 而只使用一个 if… else语句就可以实
现 。 if… else语句也可以进行嵌套使用 。
3,Else… if语句
当嵌套层次很多的时候, 例如,
if 判定条件 1
if 判定条件 2
if 判定条件 3

难免让人眼花缭乱 。 这时可以通过使用
Else… if语句去掉层次, 其使用格式如下,
if 判定条件 1{
程序代码 1
}
else if 判定条件 2{
程序代码 2
}
else if 判定条件 3{
程序代码 3
}

else {
程序代码 N
}
如果判定条件 1成立, 那么就执行程序代
码 1。
如果判定条件 1不成立, 那么就判定条件
2是否成立, 如果判定条件 2成立, 执行程序
代码 2。
如果判断判定条件 2不成立, 那么就判断
判定条件 3是否成立, 如果判定条件 3成立,
执行程序代码 3。
以此类推, 如果 Else… if中的判定条件都
不成立, 那么执行程序代码 N。
4,Switch条件语句
Switch语句的功能是根据表达式的值,
来决定执行几组语句中的哪一句 。 它的语
法形式如下,
switch 表达式
{
case 数值 1,
程序代码 1
break;
case 数值 2,
程序代码 2
break;

default,
程序代码 N
}
switch语句根据, 表达式, 的值确定要
执行的代码段 。 如果, 表达式, ( 或变量 )
的值为, 数值 1”, 那么执行程序代码 1。
如果, 表达式, 不等于, 数值 1”, 那
么, 判断, 表达式, ( 或变量 ) 的值是否
等于, 数值 2”, 如果等于, 执行程序代码
2。
以此类推。在程序的运行过程中,如
果, 表达式, 的值能够匹配某个 case的判断
条件,则在 case子句之后,直到下一个 case
子句之间的语句都会被执行。
Default子句用于指明当, 表达式, 和所
有的 case子句中的判断条件都不匹配时, 则
会执行这些语句 。
5.4.3 循环语句
在程序编写过程中常常会遇到需要
对一些问题进行一定条件的反复操作即
循环操作, 比如说, 设计一个累加器,
或者对符合一定条件的对象进行不断操
作 。 JavaScript提供了三种不同方式的循
环语句 。
下面分别进行介绍 。
1,For语句
For语句可以说是一种计数循环, 它的
循环是在用户给定的计数范围内进行的, 不
会对外部的影响有所反应, 除非所计的数超
过了给定的计数范围
它的使用格式如下,
for (start; end; setp)
{
程序代码
}
start参数代表初始化条件; end参数代表
终止条件; step参数指定循环步长 。 循环中
的程序代码将重复执行, 直到循环结束 。
2,While语句
While语句的功能是只要指定的条件为
true,那么就会重复执行一系列的语句 。 它
的使用格式如下,
While 判定条件
{
程序代码
}
,判定条件, 可以是数值或字符串表达式
( 或变量 ), 只要计算结果为 true或 false即
可 。 只要, 判定条件, 为 true就执行程序代
码, 一直执行到, 判定条件, 为 false。
3,Do… while语句
Do… while语句是 while语句的简单变形,
二者之间除了语法格式之外,唯一的不同之
处在于 Do… while语句先执行一次循环体然
后在去判断, 判定条件, 。它的使用格式如

,
Do
{
程序代码
}
while 判定条件
4,With语句
With语句的功能是在一个单一对象上
执行一系列的语句, 它的使用格式如下,
With 对象名称
{
程序代码
}
其中,, 对象名称, 参数可以是一个
对象的名称,, 程序代码, 是执行在对象
上的一条或多 条语句 。
本 章 小 结
这一章主要介绍了 JavaScript的基础知
识,内容包括:基本概念、运算符、常量、
变量、过程和函数、各种语句,重点是条
件语句、循环语句。综合运用以前所学知
识,充分利用网络资源,读者可以编写一
些更复杂的 JavaScript程序,来增加网站的
页面的效果。
习 题
1,编写一个 Web界面, 禁止使用鼠标右键,
并发出警告, 如图 5-18所示 。
2,编写一个字符跟随鼠标的程序, 即鼠标
移动时, 字符随之移动, 如图 5-19。
图 5-18 习题 1
图 5-19 习题 2