Java Web应用开发技术与案例教程
上QQ阅读APP看书,第一时间看更新

2.3 JavaScript脚本语言

JavaScript是一种简单的脚本语言,可以在浏览器中直接运行,是一种在浏览器端实现网页与客户交互的技术。

JavaScript代码可以直接嵌套在HTML网页中,它响应一系列的事件,当一个JavaScript函数响应的动作发生时,浏览器就执行对应的JavaScript代码。本小节主要介绍JavaScript的基本语法、事件和常用对象以及使用方法。

2.3.1 JavaScript的基本语法

JavaScript是一种简单的脚本语言,该脚本语言的基本成分:数据类型、常量变量、运算符、表达式、控制语句、函数等。

1.数据类型

JavaScript有主要数据类型:int、float、string(字符串)、boolean、null(空类型)。

2.变量

在JavaScript中,使用命令var声明变量。在声明变量时,不需要指定变量的类型,而变量的类型将根据其变量赋值来确定。

(1)变量声明,格式如下: var变量名[=值];(变量声明可以省略) 例如:

978-7-111-44207-3-Chapter02-76.jpg

(2)数组的声明:数组的声明有如下3种方式(数组元素类型可以不同)。

978-7-111-44207-3-Chapter02-77.jpg

3.运算符

在JavaScript中提供了算术运算符、关系运算符、逻辑运算符、字符串运算符、位操作运算符、赋值运算符和条件运算符等运算符。这些运算符与Java语言中支持的运算符及其功能相同。

4.控制语句

JavaScript中的控制语句:分支语句(if、switch),循环语句(while、do-while、for),这些语句的语法规则和使用与java语言中的要求一样。

5.函数的定义和调用

在JavaScript中,函数需要先声明定义,然后再调用。

在JavaScript中定义函数,有两种实现方式:一种是在Web页面中直接嵌入JavaScript,另一种是链接外部JavaScript文件。

(1)在页面中直接嵌入JavaScript代码。

使用<script></script>标记对封装代码,且必须放在<head>与</head>之间,其语法格式:

978-7-111-44207-3-Chapter02-78.jpg

978-7-111-44207-3-Chapter02-79.jpg

例如:

978-7-111-44207-3-Chapter02-80.jpg

(2)链接外部JavaScript。

将脚本代码保存在一个单独的文件中,其扩展名为.js,然后在需要的Web页面中链接该JavaScript文件,同样,也必须放在<head>与</head>之间,其链接语法格式:

978-7-111-44207-3-Chapter02-81.jpg

其中,url指明JavaScript外部文档的地址(相对路径),其文件后缀为“.js”,在外部文档中不需要将脚本代码用<script>和</script>标记括起来。

例如:设计脚本文件test.js,其代码如下(在一个文件中可以设计多个函数)。

978-7-111-44207-3-Chapter02-82.jpg

而在HTML中,需要采用如下方式(与要使用它的网页在同一目录下):

978-7-111-44207-3-Chapter02-83.jpg

提示:当JavaScript的代码量比较大的时候,或者在多个页面都会用到同样功能的JavaScript代码时,通常存放到*.js文件中。

(3)函数的调用

在JavaScript中,函数的调用一般是由事件引起的,调用方法见2.3.2中例子。

2.3.2 JavaScript的事件

在浏览器中网页与客户的交互都是通过“事件”引发的,当一个事件发生时,例如“用户单击某个按钮”,浏览器认为在这个按钮上发生了一个click事件,然后根据该按钮所定义的事件处理函数,执行相应的JavaScript脚本。

1.JavaScript的事件的含义

JavaScript的事件是指用户对网页的一些特定“操作”,例如:鼠标的单击、键盘键被按下等行为都是事件。而事件会引起要处理的“事务”,例如,点击一个超链接,这里的“单击鼠标”就是一个事件,然后由该事件引发网页的加载处理(一般称为事件处理函数)。

事件处理函数是指用于响应某个事件而执行的处理程序。在JavaScript中,规定“on事件名”是对应事件处理程序句柄的名字,例如,当用户单击按钮时,将触发按钮的onClick函数。表2-9给出常用的事件、事件处理函数及何时触发事件处理函数。

表2-9 常用的事件、事件处理函数

978-7-111-44207-3-Chapter02-84.jpg

2.在HTML中引用(指定)事件处理函数

在HTML中指定事件处理程序,需要在HTML标记中添加相应的事件处理程序的属性,并在其中指定作为属性值的代码或是函数名称。使用格式:

<标签 各有关属性及其属性值o n事件名称="函数名称(参数)">

例2-9】 通过input输入标签,引发一个单击事件,该事件的处理函数名是onClick(),其要完成的功能是通过函数test()实现的,而函数test()的功能是显示一个提示窗口(由Windows的alert方法完成),并提示“事件引发一操作,并成功执行了这个操作!”。

这里采用在页面中直接嵌入JavaScript代码的实现方式,其代码如下:

978-7-111-44207-3-Chapter02-85.jpg

该程序的运行界面如图2-11和2-12,当浏览器运行程序ch02_9.html时,首先显示图2-11所示的页面,但单击“按钮”时,出现图2-12所示的提示对话框,当单击“确定”后,该提示对话框消失。

978-7-111-44207-3-Chapter02-86.jpg

图2-11 例2-9运行界面

978-7-111-44207-3-Chapter02-87.jpg

图2-12 提示对话框

在HTML文档中,需要JavaScript对HTML文档内的有关信息和数据进行加工处理。如何获取HTML文档中的各种信息和数据呢?需要通过JavaScript内置实现。

2.3.3 JavaScript的对象

JavaScript所实现的动态功能,基本上都是对HTML文档或者是HTML文档运行的环境进行的操作,这些操作必须找到相应的对象,通过这些对象,实现对网页信息的操作和处理加工。

JavaScript中设有内置对象,常用的内置对象有String、Date和浏览器的文档对象(window、navigator、screen、history、location、document)等。对于String对象和Date对象与Java语言中的类似。这里重点介绍window、history、location、document对象的属性、方法和应用。

1.window对象

HTML文档内容在window对象中显示,同时,window对象提供了用于控制浏览器窗口的方法。window对象属性的常用方法如表2-10所示。

表2-10 window对象属性的常用方法

978-7-111-44207-3-Chapter02-88.jpg

在这些方法中,警告对话框——window.alert()与确认对话框——window.confirm()是使用较多的方法,当某些事件发生时,需要通过对话框给用户显示提示信息,其使用方法参考上一小节例2-9。

2.location对象

location对象实现网页页面的跳转。在HTML中使用标记<a></a>来实现页面的跳转,在JavaScript中,利用location对象实现页面的自动跳转。使用格式:

978-7-111-44207-3-Chapter02-89.jpg

例如,跳转到搜狐网页:

978-7-111-44207-3-Chapter02-90.jpg

3.history对象

history对象可以访问浏览器窗口的浏览历史,通过go、back、forward等方法控制浏览器的前进和后退。表2-11给出了history对象的属性和方法。

表2-11 history对象的属性和方法

978-7-111-44207-3-Chapter02-91.jpg

例如:从当前网页,回退到刚访问过的上一个网页页面,需要的语句为:

978-7-111-44207-3-Chapter02-92.jpg

4.document对象

每个HTML文档被加载后都会在内存中初始化一个document对象,该对象存放整个网页HTML内容,从该对象中,可获取页面表单的各种信息。这里重点介绍获取HTML页面中表单内各输入域信息的方法和使用。

(1)获取表单域对象。

获得表单域对象的主要方法有如下两种:通过表单访问与直接访问。

假设有如下的表单:

978-7-111-44207-3-Chapter02-93.jpg

则可以通过以下方法获取输入域对象:

①通过表单访问。

978-7-111-44207-3-Chapter02-94.jpg

②直接访问。

978-7-111-44207-3-Chapter02-95.jpg

(2)获取表单域的值。

若表单域对象为fObj,由于表单域类型不同,其获取表单域值的方法也不同,常用的方法:

①获取文本域、文本框、密码框的值。

978-7-111-44207-3-Chapter02-96.jpg

②获取复选框的值。

例如,对于如下的一组复选框:

978-7-111-44207-3-Chapter02-97.jpg

利用JavaScript取值的方法:

978-7-111-44207-3-Chapter02-98.jpg

③获取单选按钮的值。

例如,对于如下的一组单选按钮:

978-7-111-44207-3-Chapter02-99.jpg

利用JavaScript取值的方法如下:

978-7-111-44207-3-Chapter02-100.jpg

④获取列表框的值。

对于单选列表框,可以用如下方法取出值:

978-7-111-44207-3-Chapter02-101.jpg

对于多选列表,取值需要循环:

978-7-111-44207-3-Chapter02-102.jpg

2.3.4 案例——JavaScript实现输入验证

对于一个HTML页面中的表单,可以获取其中的各项表单域的信息,利用这些信息,可以判定各表单域所提供的输入值是否合法,是否符合所要求的格式,这就是表单的输入验证,也是JavaScript最重要的应用。下面通过一个案例,给出具体的实现方法。

例2-10】 例2-9中已经设计了一个注册页面,并利用CSS样式表进行美化了,在本例中,根据图2-13页面所给出的不同信息的输入要求,利用JavaScript进行表单数据有效性验证,当不符合要求时,通过警告框,给出提示,并重新输入。

978-7-111-44207-3-Chapter02-103.jpg

图2-13 例2-9给出的修饰后的页面

分析】 输入表单的验证就是对表单中输入的数据进行检验,如果表单中填入的数据不符合要求,则禁止提交,并给用户适当的提示信息,以便用户重新输入。只有当所有输入的数据符合所要求后,才允许提交,并进入表单标签的action属性所指定的处理程序,即<form action="提交后,进入的处理页面">。

(1)由图2-13,该注册页面,需要验证的表单输入域和要求。

●用户名:用户名是否为空,是否符合规定的格式(用户名由字母开头,后跟字母、数字或下划线!)。

●密码:密码长度是否超过6,两次密码输入是否一致。

●邮箱地址:邮箱地址必须符合邮箱格式。

(2)必须注意提交表单并实现输入验证的方式。

一般使用“button类型”按钮提交,“提交”时先执行“响应函数”。提交方式:

978-7-111-44207-3-Chapter02-104.jpg

另外,在验证函数中,当都满足格式后,采用如下格式,实现提交:

978-7-111-44207-3-Chapter02-105.jpg

设计与实现】 对于验证输入格式,实际上就是编写有关的Javascript函数,去验证表单中各输入域是否符合规定,若不符合规定,给出提示信息。为此,使用JavaScript编写验证函数,并形成文件ch02_10_JavaScript.js,其代码如下:

978-7-111-44207-3-Chapter02-106.jpg

978-7-111-44207-3-Chapter02-107.jpg

然后,在页面的<head></head>之,添加一行:

978-7-111-44207-3-Chapter02-108.jpg

最后,修改注册页面以及最后的“提交输入域”,其代码如下:

978-7-111-44207-3-Chapter02-109.jpg