资源描述
五JavaScript事件与对象解析.docx
《五JavaScript事件与对象解析.docx》由会员分享,可在线阅读,更多相关《五JavaScript事件与对象解析.docx(56页珍藏版)》请在冰豆网上搜索。
五JavaScript事件与对象解析
第10章JavaScript事件与对象
JavaScript的一个重要特点是基于对象。
对象将程序数据和操作封装在一起,使得程序开发更加直观、模块化和可复用,它的应用大大简化了JavaScript程序的设计。
JavaScript语言是基于对象的(Object-Based),而不是面向对象的(object-oriented)。
之所以说它是一门基于对象的语言,主要是因为它没有提供象抽象、继承、重载等有关面向对象语言的许多功能。
而是把其它语言所创建的复杂对象统一起来,从而形成一个非常强大的对象系统。
虽然JavaScript语言是一门基于对象的,但它还是具有一些面向对象的基本特征。
它可以根据需要创建自己的对象,从而进一步扩大JavaScript的应用范围,增强编写功能强大的Web文档。
事件是浏览器响应用户操作的机制,它提供与浏览器窗口和其中的网页进行交互的接口。
在浏览器中,事件主要由用户的操作产生,包括加载页面、输入数据、鼠标和键盘操作等。
JavaScript可以捕获这些事件,并进行相应地处理,从而可以开发出交互性和易用性更强的HTML页面。
本章主要讲述使用JavaScript处理常用事件的方法,包括如何利用事件与浏览器窗口进行交互;本章还重点介绍了JavaScript对象的概念、常用JavaScript内置对象和浏览器对象的使用方法。
学习目标
在学习完本章之后,读者应能理解和掌握以下几点:
●事件的概念,常用的JavaScript事件及其含义;
●如何根据网页设计需要编写事件处理程序;
●什么是对象,对象的属性和方法的含义;
●几个JavaScript内置对象的功能及使用方法;
●几个浏览器对象的功能及使用方法;
10.1事件及其处理
事件是指定活动发生时生成的信号,主要由用户操作产生。
用户在超链接上单击、改变文本框内容和页面关闭等都是事件的实现。
表10.1列出了常用的JavaScript事件。
表10.1常用的JavaScript事件
事件
描述
click
单击事件
dbclick
双击事件
mouseover
鼠标移入事件
Mouseout
鼠标移出事件
Focus
获得输入焦点事件
blur
失去输入焦点事件
submit
表单提交事件
reset
表单重置事件
load
加载页面事件
unload
离开页面事件
不同的HTML元素可以产生不同的事件,每个事件都有与之对应的事件处理属性(以“on+事件名”的方式命名),只需为其指定(编写)事件对应的事件处理程序,就可以处理这个事件。
常见的HTML元素及其事件处理属性如表10.2所示。
表10.2常用HTML元素的事件处理属性
HTML元素
HTML标记
事件处理属性
表单
显示结果
如图10.1所示的就是单击“确定”时的显示结果。
图10.1事件处理程序
2直接使用JavaScript语句处理事件
使用范例
若采用“直接使用JavaScript语句处理事件”的方式,只需在标签的onClick属性中直接指定JavaScript代码“alert('坚持就是胜利!
')”,上例的代码应改为:
click事件10.2JavaScript的常用事件
在前面的章节中已经介绍了click事件,这只是最简单的事件。
在JavaScript中提供了更多的事件,恰当地使用这些事件可以进一步增强页面交互功能。
下面介绍几组最常用的事件:
●click事件与dbclick事件
●load事件与unload事件
●mouseover事件与mouseout事件
●focus事件与blur事件
●submit事件与reset事件
10.2.1click事件与dbclick事件
click事件在鼠标单击的时候发生。
点击按钮(普通按钮、提交按钮或重置按钮)、单选框、复选框和超链接时都会产生这个事件。
dbclick事件在鼠标双击的时候发生。
双击超链接或其他页面元素时会产生这个事件。
在InternetExplorer中,响应dbclick事件前会产生一个click事件。
使用范例
制作在线测试页面。
显示一道问题,给出三个答案选项,用户通过点击答案前的单选按钮来回答。
点击按钮后弹出一个提示,告诉用户选择是否正确。
实现的方法如下:
在每个单选按钮的标签中设置onClick属性,响应click事件。
当点击单选按钮时,调用ShowMsg函数,弹出一个消息对话框告诉用户选择结果。
当用户点击3个按钮时,分别提示“不对,再想想”、“正确,真聪明”和“错了,加油”。
在线测试
--
functionShowMsg(msg)//事件处理函数
{
alert(msg);
}
-->
鼠标单击时发生的事件是:
显示结果
如图10.2所示的就是在线测试页面的显示效果。
图10.2在线测试页面
选择正确答案后,浏览器弹出“正确,真聪明”的提示,如图10.3所示。
图10.3选择正确的提示
关闭消息对话框,选择一个错误的答案,浏览器弹出“不对,再想想”的提示,如图10.4所示。
图10.4选择错误的提示
10.2.2load事件与unload事件
load事件发生在浏览器加载完页面时,即网页刚被显示出来时。
unload事件与load事件相对应,发生在离开(关闭)网页时。
通常在
标签中设置这2个事件的处理属性。
使用范例
通过设置
标签的onLoad和onUnload属性,打开和关闭窗口时进行提示:
load和unload事件')"onUnload="alert('轻轻的你走了,正如你轻轻的来。
')">
显示结果
打开页面时弹出欢迎信息,如图10.5所示。
图10.5打开窗口时的消息。
关闭浏览器窗口后弹出另一个消息提示框,如图10.6所示。
图10.6关闭窗口时的消息。
10.2.3mouseover和mouseout事件
1.mouseover和mouseout是鼠标事件。
当鼠标移动到HTML元素(比如超链接)所在区域时,会触发mouseover事件;当鼠标从HTML元素所在区域移出时,会触发mouseout事件。
使用范例
通过设置标签的onMouseOver和onMouseOut属性,当鼠标移到用标记的文字上时,在状态栏显示“鼠标移入”;当鼠标移出时,在状态栏显示“鼠标移出”:
鼠标事件
--
functionshowStatus(msg)//在状态栏上显示信息
{
window.status=msg;
}
-->
测试一下
显示结果
当鼠标移入的显示效果如图10.7所示,浏览器左下角的状态栏中显示“鼠标移入”字样。
图10.7鼠标移入的效果
当鼠标移出的显示效果如图10.8所示,状态栏中显示“鼠标移出”字样。
图10.8鼠标移出的效果
2.通过id,实现mouseover和mouseout事件
当鼠标放到标签中的时候div显示红色背景,鼠标离开时div显示绿色背景:
(主要通过id号改变元素的属性)
显示结果:
鼠标离开时
鼠标放上去时
//www.w3.org/1999/xhtml">
无标题文档#div1{width:
300;height:
300;background-color:
#FF0000;}
functiontoGreen()
{
document.getElementById('div1').style.width='400px';
document.getElementById('div1').style.height='400px';
document.getElementById('div1').style.background='green';
}
functiontoRed()
{
document.getElementById('div1').style.width='300px';
document.getElementById('div1').style.height='300px';
document.getElementById('div1').style.background='red';
}
10.2.4focus事件与blur事件
一个HTML元素,比如文本框或下拉菜单,当用鼠标或键盘选中,即获得焦点时,就会产生一个focus事件。
相对的,当它失去焦点时,就会产一个blur事件。
使用范例通过设置标签的onFocus和onBlur属性,当文本框获得焦点时,在状态栏上显示“用户名由字母和数字组成”;当文本框失去焦点时,清除状态栏上的内容。
focus和blur事件
--
functionshowStatus(msg)//在状态栏上显示信息
{
window.status=msg;
}
-->
显示结果
如图10.9所示在文本框内单击时,浏览器左下角的状态栏上显示“用户名由字母和数字组成”。
图10.9文本框获得焦点
单击文本框外的空白区域,状态栏清空,如图10.10所示。
图10.10文本框失去焦点
10.2.5submit和reset事件
submit和reset事件都是与表单相关的事件。
当填写完一个表单,进行提交时就会产生submit事件。
submit事件的处理程序通常是用来检查表单项目的有效性,比如判断表单是否填写完整。
reset事件发生在用户重置表单内容时。
当用户对输入的内容不满意时,就要进行重置,将表单内容还原到填写前的样子。
使用范例
分别在
显示结果
如图10.11所示的是点击“提交”按钮时的显示结果。
图10.11提交表单
如图10.12所示的是点击“重置”按钮时的显示结果。
图10.12重置表单
10.3JavaScript对象基础
对象是现实世界中存在的客观事物,例如人、电脑和湖泊等。
对象也存在于计算机和网络世界中。
HTML页面和其中包含的网页元素都可以看作是对象。
10.3.1对象的基本概念
JavaScript中的对象是由属性(properties)和方法(methods)两个基本的元素的构成的。
前者是对象在实施其所需要行为的过程中,实现信息的装载单位,从而与变量相关联;后者是指对象能够按照设计者的意图而被执行,从而与特定的函数相联。
下面分别解释这两个概念。
●属性
简单地讲,属性是用于描述对象的内部变量。
这些变量中保存着对象自身的信息。
例如,length是一个字符串对象的属性,储存着字符串的长度信息。
●方法
方法是一个对象自己所属的函数,可以直接访问对象的内部变量。
10.3.2引用对象的途径
一个对象要真正地被使用,可采用以下几种方式获得:
●引用JavaScript内部对象;
●由浏览器环境中提供;
●创建新对象。
这就是说一个对象在被引用之前,这个对象必须存在,否则引用将毫无意义,而出现错误信息。
从上面中我们可以看出JavaScript引用对象可通过三种方式获取。
要么创建新的对象,要么利用现存的对象
10.3.3有关对象操作语句
在JavaScript中提供了几个用于操作对象的语句和关键字及运算符。
(1)for...in语句
格式如下:
for(对象属性名in已知对象名)
该语句的功能是用于对已知对象的所有属性进行操作的控制循环。
它是将一个已知对象的所有属性反复置给一个变量;而不是使用计数器来实现的。
该语句的优点就是无需知道对象中属性的个数即可进行操作。
例:
下列函数是显示数组中的内容:
FunctionshowData(object)
for(varX=0;X<30;X++)
document.write(object[i]);
该函数是通过数组下标顺序值,来访问每个对象的属性,使用这种方式首先必须知道数组的下标值,否则若超出范围,则就会发生错误。
而使for...in语句,则根本不需要知道对象属性的个数,见下:
FunctionshowData(object)
for(varpropinobject)
document.write(object[prop]);
使用该函数时,在循环体中,for自动将的属性取出来,直到最后为此。
(2)with语句
使用该语句的意思是:
在该语句体内,任何对变量的引用被认为是这个对象的属性,以节省一些代码。
withobject{
...}
所有在with语句后的花括号中的语句,都是在后面object对象的作用域的。
(3)this关键字
this是对当前的引用,在JavaScript由于对象的引用是多层次,多方位的,往往一个对象的引用又需要对另一个对象的引用,而另一个对象有可能又要引用另一个对象,这样有可能造成混乱,最后自己已不知道现在引用的那一个对象,为此JavaScript提供了一个用于将对象指定当前对象的语句this。
(4)new运算符
虽然在JavaScript中对象的功能已经是非常强大的了。
但更强大的是设计人员可以按照需求来创建自己的对象,以满足某一特定的要求。
使用new运算符可以创建一个新的对象。
其创建对象使用如下格式:
newObject=newObject(Parameterstable);
其中newObject创建的新对象:
object是已经存在的对象;parameterstable参数表;new是JavaScript中的命令语句。
如创建一个日期新对象
newDate=newDate()
birthday=newDate(December12.1998)
之后就可使newDate、birthday作为一个新的日期对象了。
10.3.4对象属性的引用
对象属性的引用可由下列三种方式之一实现:
(1)使用点(.)运算符
university.name=“云南省”
university.city=“昆明市”
university.date="1999"
其中university是一个已经存在的对象,name、city、date是它的三个属性,并通过操作对其赋值。
例如,网页的背景色由document对象的bgColor属性表示,要将背景色改为蓝色,可以使用下面的语句:
document.bgColor="blue";
document的write方法可以向浏览器输入HTML文本,若要在浏览器中显示“早上好!
”这句话,可以使用下面的语句:
document.write("
早上好!
");
(2)通过对象的下标实现引用
university[0]=“云南”
university[1]=“昆明市”
university[2]="1999"
通过数组形式的访问属性,可以使用循环操作获取其值。
Functionshowunievsity(object)
for(varj=0;j<2;j++)
document.write(object[j])
若采用For...in则可以不知其属性的个数后就可以实现:
Functionshowmy(object)
for(varpropinthis)
docament.write(this[prop]);
(3)通过字符串的形式实现
university["Name"]=“云南”
university["City"]=“昆明市”
university["Date"]="1999"
10.3.5对象方法的引用
在JavaScript中对象方法的引用是非常简单的。
ObjectName.methods()
实际上methods()=FunctionName,方法实质上是一个函数。
如引用university对象中的showmy()方法,则可使用:
document.write(university.showmy())
或:
document.write(university)
如果在程序中要多次使用某个对象的属性和方法时,可以使用with语句简化书写。
在“语句块”中,可以直接使用对象的属性名和方法名,而不需加“对象名.”的前缀。
例如:
document.bgColor="blue";
document.write("
早上好!
");
可以简写为
with(document)
{
bgColor="blue";
write("
早上好!
");
}
10.4JavaScr