1 / 64

第 7 章

第 7 章. 事件处理. 学习目标. 了解什么是事件以及事件的调用 了解常用事件 掌握鼠标键盘事件 掌握页面事件 掌握表单事件 掌握滚动字幕事件 掌握编辑事件. 本章目录. 7.1 事件的基本概念 7.2 鼠标键盘事件 7.3 页面事件 7.4 表单事件 7.5 滚动字幕事件 7.6 编辑事件. √. √. √. √. √. √. 7.1 事件的基本概念. 什么是事件 事件处理程序的调用 JavaScript 的常用事件. √. √. √. 什么是事件.

elton
Download Presentation

第 7 章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第7章 事件处理

  2. 学习目标 • 了解什么是事件以及事件的调用 • 了解常用事件 • 掌握鼠标键盘事件 • 掌握页面事件 • 掌握表单事件 • 掌握滚动字幕事件 • 掌握编辑事件

  3. 本章目录 • 7.1 事件的基本概念 • 7.2 鼠标键盘事件 • 7.3 页面事件 • 7.4 表单事件 • 7.5 滚动字幕事件 • 7.6 编辑事件 √ √ √ √ √ √

  4. 7.1 事件的基本概念 • 什么是事件 • 事件处理程序的调用 • JavaScript的常用事件 √ √ √

  5. 什么是事件 事件是用户在访问页面时执行的操作。当浏览器探测到一个事件时,比如鼠标点击或按键,它可以触发与这个事件相关联的JavaScript对象,这些对象称为事件处理程序。事件处理是一项重要技术,它包含了用户与页面的所有交互。

  6. 什么是事件处理器 • 事件处理器是一段JavaScript脚本,事件处理器的名称通常是在事件类型的前面加上on作为前缀,习惯上规定,事件处理器名称中的事件类型的各个单词的首字母要大写。 • 例:click事件的事件处理器名称为onClick。

  7. 事件处理器的绑定方法 • 使用HTML标签属性绑定事件处理器 • 使用JavaSript对象属性绑定事件处理器 • 使用<script>标签的属性绑定事件处理器

  8. 事件处理程序的调用 在使用事件处理程序对页面进行操作时,最主要的是如何通过对象的事件来指定事件处理程序,其指定方式主要有三种方法: (1)通过HTML标记使用事件 该方法是直接在HTML标记中指定事件处理程序,例如在<body>和<input>标记中指定。 <标记 … … 事件="事件处理程序" [事件="事件处理程序" ...]> 在以上语法中的事件处理程序可以是JavaScript语句,也可是自定义函数,如果是JavaScript语句,可以在语句的后面以分号(;)作为分隔符,执行多条语句。 例7.1 在页面加载完成后将弹出一个“欢迎进入本网页”的对话框,在用户退出页面后,弹出一个“谢谢浏览”对话框。代码如下: <body onLoad="alert('欢迎进入本网页')" onunLoad="alert('谢谢浏览')" > 在浏览器中预览网页,效果如图7.3和图7.4所示。

  9. 事件处理程序的调用 在“确定”按钮的单击事件中,用多行代码改变页面中“JavaScript教程”文本的字体样式。其操作过程是在页面加载后,文本会以“宋体”格式进行显示,在单击“确定”按钮后,将弹出一个输入提示框,向该提示框的文本框中输入1,单击“确定”按钮,这时,将关闭提示框,将页面中的文本以“华文行楷”格式进行显示,程序代码如下。 <form name="form1" method="post" action=""> JavaScript教程 </form> <form name="form2" method="post" action=""> <input type="button" name="Button" value="确定" onclick="Sfont=prompt('请输入数字1','','提示框');if (Sfont=='1'){sf='粗体字';form1.style.fontFamily='华文行楷';}"> </form> 在浏览器中预览网页,效果如图7.5、图7.6和图7.7所示。

  10. 事件处理程序的调用 (2)指定特定对象的特定事件 该方法是在JavaScript的<script>标记中指定特定的对象,以及该对象要执行的事件名称,并在<script>和</script>标记中编写事件处理程序代码。 <script language="JavaScript" for="对象" event="事件"> … //事件处理程序代码 … </script> 例如,用<script>和</script>标记来完成页面加载和关闭时显示对话框。代码如下: <script language="javascript" for="window" event="onload"> alert("欢迎进入本页面"); </script> <script language="javascript" for="window" event="onunload"> alert("谢谢浏览"); </script> (3)通过JavaScript代码使用事件 该方法是在JavaScript脚本中直接对各对象的事件及事件所调用的函数进行声明,不用在HTML标记中指定要执行的事件。 <事件主角 - 对象>.<事件> = <事件处理程序>;

  11. 事件处理程序的调用 例7.2 直接在JavaScript脚本中执行按钮的单击事件,而不用在按钮的<input>标记中调用单击事件。该例将pp()函数定义为Button按钮的onclick事件的处理过程,程序代码如下。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>通过JavaScript代码使用事件</title> </head> <input type="button" name="Button" value="确定"> <script language="javascript"> function pp() { alert("欢迎使用JavaScript教程"); } Button.onclick=pp; </script> <body> </body></html> 在浏览器中预览网页,效果如图7.8所示。

  12. JavaScript的常用事件 为了便于读者查找JavaScript中的所有事件,下面以表格的形式对各事件进行说明。如表10.1所示。

  13. JavaScript的常用事件 续表

  14. JavaScript的常用事件 续表

  15. JavaScript的常用事件 续表

  16. 课堂练习——基本事件模型综合训练 • 页面中放置两个超链接和一个按钮 • 当鼠标滚动到第一个超链接时会弹出警告对话框,显示超链接的URL地址(this.href) • 当单击第二个超链接时,浏览器不会导航到链接所指定的页面(return false) • 当单击按钮时浏览器会导航到第二个超链接所指定的页面(window.location=document.getElementById(“第二个超链接的id").href)

  17. 7.2 鼠标键盘事件 鼠标和键盘事件是在页面操作中使用最频繁的操作,可以利用鼠标事件在页面中实现鼠标移动、单击时的特殊效果。也可以利用键盘事件来制作页面的快捷键等。 • 鼠标的单击事件 • 鼠标的按下或松开事件 • 鼠标的移入移出事件 • 鼠标移动事件 • 键盘事件 √ √ √ √ √

  18. 鼠标的单击事件 单击事件(onclick)是在鼠标单击时被触发的事件。单击是指鼠标停留在对象上,按下鼠标键,在没有移动鼠标的同时放开鼠标键的这一完整过程。 单击事件一般应用于Button对象、Checkbox对象、Image对象、Link对象、Radio对象、Reset对象和Submit对象,Button对象一般只会用到onclick事件处理程序,因为该对象不能从用户那里得到任何信息,如果没有onclick事件处理程序,按钮对象将不会有任何作用。 例7.3 通过按钮变换背景颜色,单击“变换背景”按钮,动态的改变页面的背景颜色,当用户再次单击按钮时,页面背景将以不同的颜色进行显示,效果如图7.9、图7.10所示。

  19. 鼠标的单击事件 程序代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>通过按钮变换背景颜</title> </head> <body> <script language="javascript"> var Arraycolor=new Array("olive","teal","red","blue","maroon","navy","lime","fuschia","green","purple","gray","yellow","aqua","white","silver"); var n=0; function turncolors(){ if (n==(Arraycolor.length-1)) n=0; n++; document.bgColor = Arraycolor[n]; } </script> <form name="form1" method="post" action=""> <p> <input type="button" name="Submit" value="变换背景" onclick="turncolors()"> </p> <p>用按钮随意变换背景颜色.</p> </form> </body> </html>

  20. 鼠标的按下或松开事件 鼠标的按下或松开事件分别是onmousedown和onmouseup事件。其中,onmousedown事件用于在鼠标按下时触发事件处理程序,onmouseup事件是在鼠标松开时触发事件处理程序。在用鼠标单击对象时,可以用这两个事件实现其动态效果。 例7.4 用onmousedown和onmouseup事件将文本制作成类似于<a>(超链接)标记的功能,也就是在文本上按下鼠标时,改变文本的颜色,当在文本上松开鼠标时,恢复文本的默认颜色,并弹出一个空页(可以链接任意网页)。运行结果如图7.11和图7.12所示。

  21. 鼠标的按下或松开事件 程序代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>通过按钮变换背景颜</title> </head> <body> <script language="javascript"> var Arraycolor=new Array("olive","teal","red","blue","maroon","navy","lime","fuschia","green","purple","gray","yellow","aqua","white","silver"); var n=0; function turncolors(){ if (n==(Arraycolor.length-1)) n=0; n++; document.bgColor = Arraycolor[n]; } </script> <form name="form1" method="post" action=""> <p> <input type="button" name="Submit" value="变换背景" onclick="turncolors()"> </p> <p>用按钮随意变换背景颜色.</p> </form> </body></html>

  22. 鼠标的移入移出事件 鼠标的移入和移出事件分别是onmouseover和onmousemove事件。其中,onmouseover事件在鼠标移动到对象上方时触发事件处理程序,onmousemove事件在鼠标移出对象上方时触发事件处理程序。可以用这两个事件在指定的对象上移动鼠标时,实现其对象的动态效果。 例7.5 鼠标在图片上移入或移出时,动态改变图片的焦点,主要是用onmouseover和onmouseout事件来完成鼠标的移入和移出动作。运行结果如图7.13、图7.14所示。

  23. 鼠标的移入移出事件 程序代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title> 鼠标移动时改变图片焦点</title> </head> <body> <script language="javascript"> <!-- function visible(cursor,i) { if (i==0) cursor.filters.alpha.opacity=100; else cursor.filters.alpha.opacity=30; } //--> </script> <table border="0" cellpadding="0" cellspacing="0"> <tr> <td align="center" bgcolor="#CCCCCC"> <img src="Temp.jpg" border="0" style="filter:alpha(opacity=100)" onMouseOver="visible(this,1)" onMouseOut="visible(this,0)" width="148" height="121"> </td> </tr> </table> </body></html>

  24. 鼠标移动事件 鼠标移动事件(onmousemove)是鼠标在页面上进行移动时触发事件处理程序,可以在该事件中用document对象实时读取鼠标在页面中的位置。 例7.6 鼠标在页面中移动时,在页面的状态栏中显示当前鼠标在页面上的位置,也就是(x,y)值。运行效果如图7.15所示。

  25. 鼠标移动事件 程序代码如下: <html> <head> <title>在状态栏中显示鼠标的在页面中的当前位置</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <script language="javascript"> <!-- var x=0,y=0; function MousePlace() { x=window.event.x; y=window.event.y; window.status="X: "+x+" "+"Y: "+y; } document.onmousemove=MousePlace; //--> </script>

  26. 鼠标移动事件案例 • 当鼠标移到图片上时图片会变成半透明,而当鼠标离开图片时图片又会恢复成不透明

  27. <HTML> <HEAD> <TITLE>半透明图片</TITLE> <STYLE> .aIMG{ filter:alpha(opacity=100) } </STYLE> <SCRIPT LANGUAGE="javascript"> function Change(obj) { obj.filters.alpha.opacity = 50; } function Restore(obj) { obj.filters.alpha.opacity = 100; } </SCRIPT> </HEAD> <BODY> <IMG SRC="ad.gif" class="aIMG" onmouseover="javascript:Change(this);" onmouseout="javascript:Restore(this);"> </BODY> </HTML>

  28. 下拉列表超链接案例

  29. <HTML> <HEAD> <TITLE>下拉式菜单超级链接</TITLE> <SCRIPT LANGUAGE="javascript"> function GO(){ newWin = open(); newWin.location.href = document.myForm.mySelect.options[document.myForm.mySelect.selectedIndex].value; } </SCRIPT> </HEAD> <BODY> <FORM NAME="myForm"> <SELECT NAME="mySelect" SIZE="1"> <OPTION VALUE="http://cn.yahoo.com">雅虎</OPTION> <OPTION VALUE="http://www.baidu.com">百度</OPTION> <OPTION VALUE="http://www.google.cn">Google</OPTION> </SELECT> &nbsp;<INPUT TYPE="BUTTON" VALUE="GO!" onclick="javascript:GO()"> </FORM> </BODY> </HTML>

  30. 课堂练习

  31. 键盘事件 键盘事件包含onkeypress、onkeydown和onkeyup事件,其中onkeypress事件是在键盘上的某个键被按下并且释放时触发此事件的处理程序,一般用于键盘上的单键操作。Onkeydown事件是在键盘上的某个键被按下时触发此事件的处理程序,一般用于组合键的操作。Onkeyup事件是在键盘上的某个键被按下后松开时触发此事件的处理程序,一般用于组合键的操作。 为了便于读者对键盘上的按键进行操作,下面以表格的形式给出其键码值。 下面是键盘上字母和数字键的键码值,如表7.2所示。

  32. 键盘事件 下面是数字键盘上按键的键码值,如表7.3所示。

  33. 键盘事件 下面是键盘上控制键的键码值,如表7.4所示。

  34. 键盘事件 如果想要在JavaScript中使用组合键,可以利用event.ctrlKey,event.shiftKey,event.altKey判断是否按下了ctrl键、shift键以及alt键。 例7.7 下面的实例是应用键盘中的〈A〉键,对页面进行刷新,而无需用鼠标在IE浏览器中单击“刷新”按钮,程序代码如下。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>刷新页面</title> </head> <body> <img src="flower.jpg" width="256" height="187" /> <script language="javascript"> <!-- function Refurbish(){ if (window.event.keyCode==97){ //当在键盘中按〈A〉键时 location.reload(); //刷新当前页 } } document.onkeypress=Refurbish; //--> </script> </body> </html> 在浏览器中预览网页,效果如图7.16所示。

  35. 7.3 页面事件 页面事件是在页面加载或改变浏览器大小、位置,以及对页面中的滚动条进行操作时,所触发的事件处理程序。本节将通过页面事件对浏览器进行相应的控制。 • 加载与卸载事件 • 页面大小事件 √ √

  36. 加载与卸载事件 加载事件(onload)是在网页加载完毕后触发相应的事件处理程序,它可以在网页加载完成后对网页中的表格样式、字体、背景颜色等进行设置。卸载事件(unload)是在卸载网页时触发相应的事件处理程序,卸载网页是指关闭当前页或从当前页跳转到其他网页中,该事件常被用于在关闭当前页或跳转其他网页时,弹出询问提示框。 在制作网页时,为了便于网页资原的利用,可以在网页加载事件中对网页中的元素进行设置。下面以示例的形式讲解如何在页面中合理利用图片资原。 例7.8 在网页加载时,将图片缩小成指定的大小,当鼠标移动到图片上时,将图片大小恢复成原始大小,这样可以必免使用大小相同的两个图片进行切换,并在关闭网页时,用提示框提示用户是否关闭当前页。结果如图7.17、图7.18所示。

  37. 加载与卸载事件 程序代码如下: <html> <head> <title>网页加载时缩小图片</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body onunload="pclose()"> <img src="image1.jpg" name="img1" onload="blowup(this)" onmouseout="blowup()" onmouseover="reduce()"> <script language="javascript"> <!-- var h=img1.height; var w=img1.width; function blowup() { if (img1.height>=h) { img1.height=h-100; img1.width=w-100; } } function reduce() { if (img1.height<h) { img1.height=h; img1.width=w; } } function pclose() { alert("欢迎浏览本网页"); } //--> </script> </body></html>

  38. 页面大小事件 页面的大小事件(onresize)是用户改变浏览器的大小时触发事件处理程序,它主要用于固定浏览器的大小。 例7.9 是在用户打开网页时,将浏览器以固定的大小显示在屏幕上,当用鼠标拽动浏览器边框改变其大小时,浏览器将恢复原始大小。结果如图7.19所示。 程序代码如下: <html> <head> <title>固定浏览器的大小</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <center><img src="1.jpg" width="544" height="327"></center> <script language="JavaScript"> function fastness(){ window.resizeTo(600,450); } document.body.onresize=fastness; document.body.onload=fastness; </script> </body> </html>

  39. 7.4 表单事件 表单事件实际上就是对元素获得或失去焦点的动作进行控制。可以利用表单事件来改变获得或失去焦点的元素样式,这里所指的元素可以是同一类型,也可以是多个不同类型的元素。 • 获得焦点与失去焦点事件 • 失去焦点修改事件 • 表单提交与重置事件 √ √ √

  40. 获得焦点与失去焦点事件 获得焦点事件(onfocus)是当某个元素获得焦点时触发事件处理程序。失去焦点事件(onblur)是当前元素失去焦点时触发事件处理程序。在一般情况下,这两个事件是同时使用的。 例7.10 用户选择页面中的文本框时,改变文本框的背景颜色,当选择其他文本框时,将失去焦点的文本框背景颜色恢复原始状态。结果如图7.20所示。 程序代码如下: <html> <head> <title>文本框获得焦点时改变背景颜色</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <table align="center" width="337" height="204" border="0"> <tr> <td width="108">用户名:</td> <td width="213"><form name="form1" method="post" action=""> <input type="text" name="textfield" onfocus="txtfocus()" onBlur="txtblur()"> </form></td> </tr> <tr> <td>密码:</td> <td><form name="form2" method="post" action=""> <input type="text" name="textfield2" onfocus="txtfocus()" onBlur="txtblur()"> </form></td> </tr>

  41. 获得焦点与失去焦点事件 <tr> <td>真实姓名:</td> <td><form name="form3" method="post" action=""> <input type="text" name="textfield3" onfocus="txtfocus()" onBlur="txtblur()"> </form></td> </tr> <tr> <td>性别:</td> <td><form name="form4" method="post" action=""> <input type="text" name="textfield5" onfocus="txtfocus()" onBlur="txtblur()"> </form></td> </tr> <tr> <td>邮箱:</td> <td><form name="form5" method="post" action=""> <input type="text" name="textfield4" onfocus="txtfocus()" onBlur="txtblur()"> </form></td> </tr> </table>

  42. 获得焦点与失去焦点事件 <script language="javascript"> <!-- function txtfocus(event){ var e=window.event; var obj=e.srcElement; obj.style.background="#FFFF66"; } function txtblur(event){ var e=window.event; var obj=e.srcElement; obj.style.background="FFFFFF"; } //--> </script> </body></html>

  43. 失去焦点修改事件 失去焦点修改事件(onchange)是当前元素失去焦点并且元素的内容发生改变时触发事件处理程序。该事件一般在下拉文本框中使用。 例7.11 是在用户选择下拉文本框中的颜色时,通过onchange事件来相应的改变文本框的字体颜色。结果如图7.21所示。 程序代码如下: <html> <head> <title>用下拉文本框改变字体颜色</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <form name="form1" method="post" action=""> <input name="textfield" type="text" value="JavaScript教程"> <select name="menu1" onChange="Fcolor()"> <option value="black">黑</option> <option value="yellow">黄</option> <option value="blue">蓝</option> <option value="green">绿</option> <option value="red">红</option> <option value="purple">紫</option> </select> </form>

  44. 失去焦点修改事件 <script language="javascript"> <!-- function Fcolor() { var e=window.event; var obj=e.srcElement; form1.textfield.style.color=obj.options[obj.selectedIndex].value; } //--> </script> </body> </html>

  45. 表单提交与重置事件 表单提交事件(onsubmit)是在用户提交表单时(通常使用“提交”按钮,也就是将按钮的type属性设为submit),在表单提交之前被触发,因此,该事件的处理程序通过返回false值来阻止表单的提交。该事件可以用来验证表单输入项的正确性。 表单重置事件(onreset)与表单提交事件的处理过程相同,该事件只是将表单中的各元素的值设置为原始值。一般用于清空表单中的文本框。 下面给出这两个事件的使用格式: <form name="formname" onReset="return Funname" onsubmit="return Funname " ></form> formname:表单名称。 Funname:函数名或执行语句,如果是函数名,在该函数中必须有布尔型的返回值。 例7.12 提交表单时,通过onsubmit事件判断表单中是否有空文本框,如果有,则不允许提交,并通过表单的onreset事件将表单中的文本框清空,以便重新输入信息。结果如图7.22所示。

  46. 表单提交与重置事件 程序代码如下: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>表单提交的验证</title> </head> <body style="font-size:12px"> <table width="487" height="333" border="0" align="center" cellpadding="0" cellspacing="0" background="bg.JPG"> <tr> <td align="center" valign="top"><br> <br> <br> <br> <br> <table width="86%" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#6699CC"> <form name="form1" onReset="return AllReset()" onsubmit="return AllSubmit()"> <tr bgcolor="#FFFFFF"> <td height="22" align="right">所属类别:</td> <td height="22" align="left"> <select name="txt1" id="txt1"> <option value="数码设备">数码设备</option> <option value="家用电器">家用电器</option> <option value="礼品工艺">礼品工艺</option> </select> <select name="txt2" id="txt2"> <option value="数码相机">数码相机</option> <option value="打印机">打印机</option> </select></td> </tr>

  47. 表单提交与重置事件 <tr bgcolor="#FFFFFF"> <td height="22" align="right">商品名称:</td> <td height="22" align="left"><input name="txt3" type="text" id="txt3" size="30" maxlength="50"></td> </tr> <tr bgcolor="#FFFFFF"> <td height="22" align="right">会员价:</td> <td height="22" align="left"><input name="txt4" type="text" id="txt4" size="10"></td> </tr> <tr bgcolor="#FFFFFF"> <td height="22" align="right">提供厂商:</td> <td height="22" align="left"><input name="txt5" type="text" id="txt5" size="30" maxlength="50"></td> </tr> <tr bgcolor="#FFFFFF"> <td height="22" align="right">商品简介:</td> <td height="22" align="left"><textarea name="txt6" cols="35" rows="4" id="txt6"></textarea></td> </tr> <tr bgcolor="#FFFFFF"> <td height="22" align="right">商品数量:</td> <td height="22" align="left"><input name="txt7" type="text" id="txt7" size="10"></td> </tr> <tr bgcolor="#FFFFFF"> <td height="22" colspan="2" align="center"><input name="sub" type="submit" id="sub2" value="提交"> &nbsp; <input type="reset" name="Submit2" value="重 置"> </td> </tr> </form> </table></td> </tr> </table>

  48. 表单提交与重置事件 <script language="javascript"> <!-- function AllReset() { if (window.confirm("是否进行重置?")) return true; else return false; } function AllSubmit() { var T=true; var e=window.event; var obj=e.srcElement; for (var i=1;i<=7;i++) { if (eval("obj."+"txt"+i).value=="") { T=false; break; } } if (!T) { alert("提交信息不允许为空"); } return T; } //--> </script> </body> </html>

  49. 7.5 滚动字幕事件 字幕滚动事件主要是在<marquee>标记中使用,该标记虽然不能实现多样化的字幕滚动效果,但应用起来十分简单,可以使用最少的语句来实现字幕滚动的效果。 • onbounce事件 • onstart事件 √ √

  50. onbounce事件 onbounce事件是在<marquee>标记中的内容滚动到上下或左右边界时触发的事件处理程序,该事件只有在<marquee>标记的behavior属性设为aloernate时才有效。 例7.13 将<marquee>标记的behavior属性设为aloernate,direction属性设置为up,使字幕可以在页面中上下循环滚动,并通过onbounce事件在字幕到达窗口边界时,修改scrollAmount属性值,改变字幕的滚动速度。结果如图7.23所示。

More Related