JSP技术第3章 JavaScript.docx
《JSP技术第3章 JavaScript.docx》由会员分享,可在线阅读,更多相关《JSP技术第3章 JavaScript.docx(37页珍藏版)》请在冰豆网上搜索。
JSP技术第3章JavaScript
第3章JavaScript
wangkf05@
JavaScript是一种基于对象、事件驱动的简单脚本语言,它一般嵌入在HTML文档中,由浏览器负责解释和执行,利用JavaScript可以在网页上产生动态的显示效果和实现与用户交互等功能。
了解和掌握JavaScript语言对于进行Web应用开发的人员来说是十分必要的,本章将介绍JavaScript的基本知识和编程方法,主要包含以下内容:
●JavaScript语言概述
●JavaScript的基本语法
●JavaScript的事件
●JavaScript中的内置对象
在InternetExplorer和Netscape中使用JavaScript的方法略有不同,本节的所有程序都是在InternetExplorer中执行的。
3.1JavaScrip语言概述
在网页中仅仅使用HTML超文本标识语言只能提供一种静态的信息资源,而缺乏同Web页面的交互能力。
虽然使用CGI、ASP、JSP等动态网页技术能够实现一定的交互,但是使用这些方法编程往往相对复杂,而且它们都在服务器端运行,在某种程度上加重了服务器端的负担。
JavaScript的出现使得用户与Web界面之间具有了一种实时的、动态的、可交互的表达能力。
JavaScript是一种基于对象和事件驱动并且具有很强安全性的脚本语言。
通过与HTML语言的配合,可以使页面具有丰富的表达能力。
JavaScript在客户端有浏览器解释执行,与ASP、JSP等运行于服务器端的语言不同,当页面与用户交互时,无需经过通过网路将资料传送到服务器端在传送回来的过程,而是直接的在客户端惊醒事件处理。
JavaScript也是最近备受业界推崇的AJAX技术体系中的一个重要组成部分,了解和掌握JavaScript语言的基本知识和编程方法对于进行Web应用开发的人员而言是十分必要的。
概括而言,JavaScript语言具有以下基本特征:
1.不依赖于平台
JavaScript由浏览器解释执行,只要安装有浏览器的计算机都可执行JavaScript程序,而与具体的平台无关。
目前两大通用的浏览器NetscapeNavigator和MicrosoftInternetExplorer(IE4.0起)都支持javascript。
2.简单
JavaScript的语法风格与C、C++、Java等通用的语言类似,但与这些语言不同的,它不需要编译,而是在程序运行过程中被逐行解释执行。
它一般与HTML结合在一起,使用十分简便。
3.功能强大
JavaScript基于对象,用户可以使用内置的大量对象,也可以根据自己的需要创建对象。
JavaScript采用对象驱动的方式直接对用户的输入进行响应,无需服务器端的介入,能实现良好的交互性。
4.安全
JavaScript语言能够在网络中自由的传输,安全是它重要的因素之一。
JavaScript被设计为不允许访问本地的硬盘,因而能够有效地防范病毒以及其它恶意程序。
JavaScript程序应编写在标签之间,其语法如下:
--
JavaScript程序
-->
其中,
--...//-->标识的含义是:
如果浏览器能识别JavaScript代码,则执行其结果,否则其中的所有标识均被忽略,在程序中添加标识是一个良好的编程习惯。
下面我们来看一个简单的JavaScript程序。
Hello.html
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
Hello.html
--
document.write("Hello!
ThisisthefirstJavaScriptprogram.");
//-->
在浏览器中运行的结果如下:
在上面的HTML文档中嵌入了一段JavaScript代码,JavaScript代码段一般放置在head>..或
...之间。
若将代码段放置
...在头部之间,代码段会被首先装载,文档的其余部分都可以使用,从而可使代码的功能更强大;将代码段放置在...之间可以实现某些部分动态地创建文档。
3.2JavaScript基本语法
3.2.1注释
JavaScript的注释与其它语言一样,在运行时会被忽略。
注释有两种:
单行注释和多行注释。
单行注释用双反斜杠“//”表示,使用“//”时从其出现开始到本行结尾都补忽略;而多行注释是用“/*”和“*/”括起来的一行到多行文字。
使用多行注释时,程序将忽略“/*”与“*/”之间的所有文字。
3.2.2基本数据类型
JavaScript有如下几种常用的数据类型。
1.数值型
与C++、Java不同,JavaScript语言并不严格的区分整数和浮点数。
在底层JavaScript的各种数值类型都当作浮点数来处理,只是在高层上区分整数和浮点数,因而在程序中两者可以自由的转换。
在JavaScript中整数可以格式化为十进制、八进制和十六进制。
其中,八进制整数必须以0开始,十六进制必须以0x或0X开始。
JavaScript的浮点数包含小数部分,由十进制整数、小数点和小数部分组成,它还可以以指数形式表示。
此外,JavaScript语言还定义了若干数学领域常见的特殊值:
Number.MAX_VALUE(可以表示的最大数值),Number.MIN_VALUE(可以表示的最小数值),Number.POSITIVE_INFINITY(正无穷大),Number.NEGATIVE_INFINITY(负无穷大),Number.NaN(非数学字符)。
2.布尔型
布尔型比较简单,它只有连个可选值:
true(真)和false(假)。
true和false是JavaScript的两个保留字。
布尔型常用于表示判断。
3.字符串
字符串是由单引号(‘)或双引号(“)界定的零个或多个字符。
字符串内部也可以包含单引号或双引号:
如果在一对单引号之间出现双引号,则将双引号视为字符串的一部分;如果在一对双引号之间出现单引号,则将单引号视为字符串的一部分。
如,”This’saJavaScriptString”、’Whatisthe“JavaScript”?
’都是合法的字符串。
与C++、Java类似,JavaScript也提供转义字符串,如“\f”表示换页、“\n”表示换行、“\r”表示回车、“\t”表示制表符、“\\”表示反斜杠等等。
值得注意的是,在JSP中如果需要对两个字符串进行比较需要使用equeal方法,而在JavaScript中对字符串的比较只需要使用==运算符。
StrCompare.html
javascript中字符串的比较javascript中字符串的比较
--
varstr1="JavaScript";
varstr2="JavaScript";
varstr3="Java";
document.write("
str1="+str1);
document.write("
str2="+str2);
document.write("
str3="+str3);
document.write("
");
if(str1==str2)
str4="str1和str2的内容相同!
\n";
else
str4="str1和str2!
的内容不相同\n";
if(str1==str3)
str4+="str1和str3的内容相同!
";
else
str4+="str1㎝str3的内容不相同!
";
functionmyFunction()
{
alert(str4);
}
//-->
在浏览器中显示的结果如下:
程序说明:
该程序中首先声明了三个变量并符以初值,在if语句中使用“==”对字符串的内容进行比较。
点击【字符串】比较按钮可以看到图中所示的对话框。
4.null
JavaScript提供关键字“null”表示没有任何值得情况
5.不确定值
JavaScript语言还具有一个特殊的值“不确定值”,用来表示已经创建却没有初值的变量。
对于数值,不确定值为NaN;对于字符串,不确定值为“undefined”;对于逻辑值,不确定值为“false”。
3.2.3变量
变量主要用来存取数据,与C++、Java不同,JavaScript是弱类型语言,即变量在使用前不需作声明,而是解释器在运行时检查其数据类型。
因此,JavaScript变量的使用变得十分简单。
1.变量的定义
JavaScript变量的定义与其它语言非常相似,在定义变量时需要注意以下几点:
●变量名是以字母或下划线开头的任意数值、拉丁字母和下划线的组合。
●变量名必须在一行之内
●变量名是区分大小写的
●不能与保留字重名
2.变量的类型
在JavaScript中,无论变量的种类,都用var语句声明变量,使用“=”进行符值,如:
vars;
var_ab,f1;
s=“JavaScript”;
_ab=123;
f1=true
在JavaScript中,使用var语句声明变量并不是必须的,变量可以不作声明,而在使用时由解释器根据数据的类型来确变量的类型,如:
count=100;
buffer=“thisastring”;
rate=0.158;
上面的几个变量没有预先声明,但它们的使用也是合法的。
但是在使用前对变量进行声明是良好的编程习惯,这样做可以增强程序的可读性。
3.变量的声明及作用域
JavaScript的变量也有全局变量和局部变量之分。
全局变量的作用范围是整个函数,局部变量是定义在函数体之内,只对定义该变量的函数是可见的,而对其它函数则是不可见的。
在JavaScript中,var语句可以限定变量的范围:
在函数内部用var声明的变量是局部变量,在函数内部无var声明或在函数外部声明的变量是全局变量。
3.2.4运算符
Javascript语言定义了大量的操作符,形式上与C++语言非常相似。
JavaScript语言的操作符包括四则运算符、关系运算符、位运算符、逻辑运算符、复合运算符等。
下表按照优先级有高到低的次序列举了这些操作符。
操作符
操作符名称
结合次序
示例
.
对象属性访问符
从左往右
Window.open()
[]
数组指针
从左往右
a[1]
()
括号
从左往右
(x+y)*z
++
前后增量
从右往左
x++,++x
--
前后减量
从右往左
x--,--x
-
取负
从右往左
-x
-
位运算符,按位取反
从右往左
-x
!
逻辑非
从右往左
!
x
*
乘法运算
从左往右
x*y
/
除法运算
从左往右
x/y
%
取模运算
从左往右
x%y
+
加法运算
从左往右
x+y
-
减法运算
从左往右
x-y
+
字符串连接
从左往右
str1+str2
<<
左移位
从左往右
x<>>
算术右移位
从左往右
x>>n
>>>
逻辑右移位
从左往右
x>>>n
<,<=
小于、小于等于
从左往右
x>,>=
大于、大于等于
从左往右
x>=yx>y
==
等于
从左往右
x==y
!
=
不等于
从左往右
x!
=y
===
同一性
从左往右
x===y
!
===
不同一性
从左往右
x!
===y
&
位逻辑与
从左往右
x&y
^
位逻辑异或
从左往右
x^y
|
位逻辑或
从左往右
x|y
&&
逻辑与
从左往右
x&&y
||
逻辑或
从左往右
x||y
?
:
条件
从右往左
c?
x:
y
=
符值
从右往左
x=y
*=,/=,%=,+=,-=,<<=,>>=,>>>=,&=,^=,|=
赋值、复合运算
从右往左
x*=y,x/=y,x%=y,x+=y,x-=y,x<<=y,x>>=y,x>>>=y,x&=y,x^=y,
3.2.5流程控制语句
JavaScript语言的流程控制语句和C++语言也非常相似。
、
1.条件语句
在条件语句中,当满足某些条件时执行一些代码,在满足另外某种条件时执行另外一些代码,条件语句有如下两种:
if…else语句和swith语句。
2.循环语句
循环语句用于重复的执行某些代码,直到循环终止条件满足,否则将一直执行下去。
在JavaScript中常用的循环语句有如下几种:
for语句、while语句以及do…while语句。
3.break和continue语句
使用break语句可以从For或while循环中跳出,使用continue语句可以跳过循环内剩余的语句而进入下一次循环。
4.其它流程控制语句
除上述的流程控制语句外,JavaScript还提供一些特殊的流程控制语句。
for…in语句
for…in语句的一般形式如下所示:
for(变量in对象)
{
代码段
}
使用for…in语句可以列举文档对象中的所有属性。
with语句
with语句的一般形式如下所示:
with(对象)
{
代码段
}
with语句用于声明代码的缺省对象,由with语句界定的代码段中可以直接的使用with语句声明的属性和方法,而不必写出这个属性和方法的完整引用。
看下面这个显示浏览器信息的例子:
NavigatorInfo.html
NavigatorInfomation
--
varstr;
for(varinfoinnavigator)
{
str+="navigator."+info;
str+="="+navigator[info];
str+="
";
}
with(document)
{
open();
write(unescape(str));
close();
}
//-->
执行的结果如下图所示。
程序说明:
在程序中利用for..in语句列举Navigator的所有属性并显示出来。
程序中open()、write()、close()三个函数完整的形式应该使用document引用,因为使用了with语句声明了document对象,在此处将document省略了。
3.2.6函数
和其他语言一样,可以将相对独立的一部分功能组织成函数。
在程序中使用函数可以简便程序的开发,增强程序的可读性和可维护性。
JavaScript语言另外一个重要的用途就是与事件驱动相关联,可以作为事件驱动的结果而调用,这是和其他语言不同的。
JavaScript中函数的语法如下:
function函数名(参数列表)
{
函数体;.
Return表达式;
}
JavaScrip还定义了一些全局函数,用户无需定义即可使用,下面介绍几个常用的函数:
●escape(string):
使用ISOLatin-1字符集对字符串进行编码,所有空格、标点符号、等非ASCII字符都编码改为十六进制的"%XX"的形式。
●eval(string):
执行其中的字符串,如果这个字符串时一个表达式,则进行运算;如果是JavaScript代码,则执行这段代码。
●isNaN(testValue):
判断一个值是否是数值类型。
●Number(object):
将一个对象转化为数值。
●parseFloat(string):
将一个字符串转化为浮点数。
●parseInt(sting):
将一个字符串转化为整数。
●String(object):
将一个对象转化为字符串。
●Unescape(string):
对字符串进行解码,将含有特殊值的16进制编码转换为ASCII字符串。
3.3JavaScript中的事件
在Javascript中通过时间完成用户与Web页面之间的交互,当窗口载入载出或用户进行单击按钮等操作时都可以产生一个事件。
浏览器监听事件,并在事件发生时进行相应的事件处理工作。
在本节中将讲述一些常用的事件处理编程方法。
3.3.1鼠标事件
与鼠标相关的事件很多,在这里将介绍几个常见的鼠标事件的编程实例。
1.处理Click事件
Click事件在JavaScript中十分常见,当用户单击按钮、提交按钮、单选按钮、复选框、链接、客户机图形映射区等HTML元素时都会产生此事件。
下面通过一个简单的例子了解Click事件的使用。
例calculator.html
用JavaScript实现网页计算器
.buttonStyle1{HEIGHT:
25px;WIDTH:
25px}
.buttonStyle2{HEIGHT:
25px;WIDTH:
60px;FONT:
12}
--
varexpStr="";//保存表达式
//保存用户点击的按钮的值
functioninput(value)
{
expStr+=value;
document.calForm.exp.value=expStr;
}
//如果用户点击了CE按钮,将重置表达式
functionresetExp()
{
expStr="";
document.calForm.exp.value="";
}
//如果用户单击了“=”按钮,将计算表达式的值
functioncalc()
{
document.calForm.exp.value=eval(expStr);
expStr=document.calForm.exp.value
}
//如果用户点击了“Backscpace”按钮,将从表达式中删除一个字符
functionbackSpaceExp()
{
expStr=expStr.substring(0,expStr.length-1);
document.calForm.exp.value=expStr;
}
//-->
计算器