JavaScript--基于对象的脚本语言学习笔记(三)

事件处理器

1、一个数据校验表单的例程

<html>
	<head>
		<title>js练习</title>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
		<script type="text/javascript">
			String.prototype.trim=function(){
			  return this.replace(/^\s*/,"").replace(/\s*$/,"");
			}
			//处理表单submit事件的函数
			var check=function(){
				var form=document.forms[0];
				var errStr="";
				if(form.user.value==null||form.user.value.trim()==""){
					errStr+="\n用户名不能为空!"
					form.user.focus();
				}
				if(form.pass.value==null||form.pass.value.trim()==""){
					errStr+="\n密码不能为空!"
					form.pass.focus();
				}

				if(form.email.value==null||form.email.value.trim()==""){
					errStr+="\n邮件不能为空!"
					form.email.focus();
				}
				if(!/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test(form.email.value.trim())){
					errStr+="\n邮件格式不对!!"
					form.email.focus();
			    }

				if(errStr!=""){
					alert(errStr);
					return false;
				}else{
					alert("验证成功!");
				}
			};
		</script>
	</head>

	<body id="body">
		<div>
		<h2>数据校验表单</h2>
		<form id="register" name="register" method="post" onsubmit="return check(this);" action="#">
		用户名:<input type="text" name="user"/><br/>
		密 码:<input type="password" name="pass"/><br/>
		电 邮:<input type="text" name="email"/><br/>
		<input type="submit" value="提交"/><br/><hr/>
		</form>
		</div>
	</body>
</html>
//也可以通过绑定DOM对象属性来设置事件处理函数。只要在js脚本最后添加一行:document.forms[0].onsubmit=check;

2、当为HTML元素的onclick等属性指定一系列JavaScript脚本时,如果在这些js脚本中使用this,则该关键字引用该HTML元素本身 当为DOM对象的onclick属性指定一个JavaScript函数引用时,如果在函数中使用this,该this也是引用该DOM对象本身

3、DOM提供了一种事件绑定机制:addEventListener()

语法为:objectTarget.addEventListener("eventType",handler,captureFlag)

与addEventListener()方法相对应,DOM也提供了一个方法用于删除事件处理器:removeEventListener()

语法为:objectTarget.removeEventListener("eventType",handler,captureFlag)

在DOM事件模型中当浏览器检测到发生了某个事件时,将自动创建一个Event对象,并隐式地将该对象作为事件处理函数的第一个参数传入

4、一个DOM转发事件例程(非IE)

<html>
	<head>
		<title>js练习</title>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8">
	</head>
	<body id="body">
		<input type="button" id="bt1" value="按钮1"/>
		<input type="button" id="bt2" value="按钮2"/>
		<div id="show"></div>
		<script type="text/javascript">
			//第一个按钮被单击时的事件处理函数
			var rd=function(evt){
				document.getElementById("show").innerHTML+='事件冒泡阶段:'+evt.currentTarget.value+"被击中了<br/>";
				//创建一个普通事件
				var e=document.createEvent("Events");
				//初始化事件对象,指定该事件支持冒泡,不允许取消默认行为
				e.initEvent("click",true,false);
				//将事件转发到bt2
				document.getElementById("bt2").dispatchEvent(e);
			}

			//定义第二个按钮被单击时的事件处理函数
			var goClick=function(evt){
				document.getElementById("show").innerHTML+='事件冒泡阶段:'+evt.currentTarget.value+"<br/>";
			}
			//分别为两个按钮绑定事件处理函数
			document.getElementById("bt1").addEventListener("click",rd,false);
			document.getElementById("bt2").addEventListener("click",goClick,false);
		</script>
	</body>
</html>

5、取消事件的默认行为
   DOM也提供了取消事件默认行为的方法,DOM中的事件对象都提供了preventDefault()方法,该方法不需要参数,只要执行了给定事件的      preventDefault方法,该事件的默认行为将失效。
	<body id="body">
		友情链接:<br/>
		<a id="mylink" href="http://www.njue.edu.cn">财经大学</a>
		<script type="text/javascript">
			var killClicks=function(event){
				event.preventDefault();//这句话导致点击超链接不会跳转
				alert("超链接被单击");
			}
			document.getElementById("mylink").addEventListener("click",killClicks,true);
		</script>
	</body>
  //上面的代码虽然使用preventDefault方法取消了事件的默认行为,但是并未阻止处理函数的执行,也不会影响事件的传播
  //下面的代码为超链接和document在事件传播阶段绑定了事件处理函数,将会得到执行
 	<body id="body">
		友情链接:<br/>
		<a id="mylink" name="我的超链接" href="http://www.njue.edu.cn">财经大学</a>
		<div id="show"></div>
		<script type="text/javascript">
			var killClicks=function(event){
				event.preventDefault();//这句话导致点击超链接不会跳转
				alert("超链接被单击");
				document.getElementById("show").innerHTML+="事件捕获阶段:"+event.currentTarget+"<br/>";
			}
			document.getElementById("mylink").addEventListener("click",killClicks,true);
			document.addEventListener("click",killClicks,true);//为document绑定事件处理函数
		</script>
	</body>

JavaScript--基于对象的脚本语言学习笔记(三),布布扣,bubuko.com

时间: 2024-10-23 14:46:35

JavaScript--基于对象的脚本语言学习笔记(三)的相关文章

JavaScript--基于对象的脚本语言学习笔记(二)

第二部分:DOM编程 1.文档象模型(DOM)提供了访问结构化文档的一种方式,很多语言自己的DOM解析器. DOM解析器就是完成结构化文档和DOM树之间的转换关系. DOM解析器解析结构化文档:将磁盘上的结构化文档转换成内存中的DOM树 从DOM树输出结构化文档:将内存中的DOM树转换成磁盘上的结构化文档 2.DOM模型扩展了HTML元素,为几乎所有的HTML元素都新增了innerHTML属性,该属性代表该元素的"内容",即返回的某个元素的开始标签.结束标签之间的字符串内容(不包含其它

JavaScript--基于对象的脚本语言学习笔记(一)

1.两种嵌入js的方式 使用javascript前缀构建url:<a href="javascript:alert('运行JavaScript..')">运行js</a> js脚本放在<style></style>之间: <style type="text/javascript"> alert("运行JavaScript..") </script> 2.如果没有声明变量直接使

Go语言学习笔记(三) [控制结构、内建函数]

日期:2014年7月21日 一.控制结构 1.Go中,只有几个控制结构,它没有do或者while循环,有for,灵活的switch语句和if,在switch中可以接受像for那样可选的初始化语句,另外Go中还提供了类型选择和多路通信转接器的select.Go的控制结构的语法和C相比有所不同,它不需要圆括号,但语句体必须总是包含在大括号内. 2.控制结构语法 1)if-else (1)if后紧跟单个条件 例如:if x > 0 {   //{必须和if在同一行,这是Go语法规定的,如果换行写,编译

InstallShield 脚本语言学习笔记

InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加.     一.基本语法规则      1.变量      BOOL 布尔型 值为TRUE(1)或FALSE(0)      CHAR 字符型 一字节长的(8bit)的字符      HWND 窗口句柄 用来存放窗口句柄      INT 整型 两字节长的整数      LIST 列表型 指向InstallShield列表,用ListCr

TCL脚本语言学习笔记

关于历史记录的一些命令: history             显示之前所有命令的历史记录默认为20条,可通过history keep 40改成40条等. history redo 2 表示再次执行history中的第二条命令. !!                 重新执行上一条命令!event           重新执行event命令 ^old^new       取得上一命令,并将出现的所有old(字符串,不管是否是独立的单词)替换成new,然后执行,用于修改错误非常方便. histo

【GO】GO语言学习笔记三

7.数组: 几乎是最常用的数据类型了... 数组就是指一系列同一类型数据 的集合.数组中包含的每个数据被称为数组元素(element),一个数组包含的元素个数被称为数 组的长度. 常规的数组声明方法: [32]byte // 长度为32的数组,每个元素为一个字节 [2*N] struct {x , y int32} //复杂类型数组 [1000]*float32 //指针数组 [3][5]int //二维数组 [2][2][2]float64 // 等同于[2]([2]([2]float64))

C语言学习笔记(三) 使用union检查系统大小端模式

问题:请写一个C函数,若处理器Big_endian的,则返回0:若是Little_endian的,则返回1. 简单复习下大小端的概念: 大端模式(Big_endian):字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中. 小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中. 提示:C语言中的char占1个字节,而int占4字节,因此如果某个int变量被赋值为1,则大端模式内存布局(由低到高,下同)应该为0x00,0x00,0x00

c语言学习笔记三

第三章,函数 字符串函数 //strcmp int my_strcmp(char *str1,char *str2) {   while(*str1 = = *str2)   /*不可用while(*str1++= =*str2++)来比较,当不相等时仍会执行一次++,      return返回的比较值实际上是下一个字符.应将++放到循环体中进行.*/      {         if(*str1 = = '\0') {             return 0: }         str

JavaScript基于对象编程

js面向对象特征介绍 javascript是一种面向(基于)对象的动态脚本语言,是一种基于对象(Object)和事件驱动(EventDirven)并具有安全性能的脚本语言.它具有面向对象语言所特有的各种特性,比如封装.继承及多态等.但对于大多数人说,我们只把javascript做为一个函数式语言,只把它用于一些简单的前端数据输入验证以及实现一些简单的页面动态效果等,我们没能完全把握动态语言的各种特性.在很多优秀的Ajax框架中,比如ExtJS.JQuery等,大量使用了javascript的面向