5、js事件

5.1JS事件是什么?有什么作用?

通常鼠标或热键的动作我们称之为事件(Event)

点击、表单提交、值发生改变、鼠标移出

通过js事件,我们可以完成页面的指定特效。

5.2、JS事件驱动机制简述

页面上的特效,我们可以理解在JS事件驱动机制下进行。

JS事件驱动机制:

  • 事件源                           小偷
  • 事件                              偷东西
  • 监听器                           警察
  • 注册/绑定监听器            让警察时刻盯着小偷

事件源:专门产生事件的组件

事件:由事件源所产生的动作或者事情

监听器:专门处理 事件源 所产生的事件。

注册/绑定事件监听器;让监听器事件源是否有指定事件产生,如果事件源产生指定事件,则调用监听器处理。

5.3、常见JS事件

5.3.1、点击事件(onclick)

由鼠标或热键点击元素组件时触发(应用:点击切换图片。。。。)

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			function run1(){
				alert("弹出");
			}
		</script>
	</head>
	<body>
		<input type="text" onclick="run1()" >
	</body>
</html>

效果:

 5.3.2、焦点事件(onbluer 、 onfocus)

5.3.2.1、获取焦点事件(onfocus)

焦点:即整个页面的注意力。

默认一个正常页面最多仅有一个焦点

例如:文本框中闪烁的小竖线

 通常焦点也能反映出用户目前的关注点,或者正在操作的组件

获取焦点事件:当元素组件获取焦点时触发

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
		function run1(){
			alert("请输入密码");
		}
		</script>
	</head>
	<body>
		<!-- 
		获取焦点时(就是点击文本框的时候)我们可以给他添加一些提醒
		 -->
		<input type="text" onfocus="run1()"  >
	</body>
</html>

效果

5.3.2.1、失去焦点事件(onblur)

失去焦点事件:元素组件失去焦点时触发

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
		function run1(){
			alert("失去焦点(检查密码的是否正确)");
		}
		</script>
	</head>
	<body>
		<!-- 
		失去焦点时(就是点击文本框以外区域时)我们可以给他添加一些提醒
		 -->
		<input type="text" onblur="run1()"  >
	</body>
</html>

效果:点击文本框以外的区域就会触发事件

 5.3.3、域内容改变事件(onchange)

域内容改变事件:元素组件的值发生改变时触发

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
		function run1(){
			alert("确定选这个城市吗?")
		}
		</script>
	</head>
	<body>
		<!-- 
		 当选择框  的值发生改变时,弹出一个对话框-->
		<select name="city" id="s1" onchange="run1()">
			<option value="Beijing">北京</option>
			<option value="shanghai">上海</option>
			<option value="guangzhou">广州</option>
		</select>
	</body>
</html>

效果:

用于多个选项或者多个值来回切换时做提醒

5.3.4、加载完毕事件onload

加载完毕事件:元素组件加载完毕时触发

获取元素对象,保证元素对象先加载,建议是把获取元素对象代码放在最后

(通俗讲:就是在某一个标签执行完了之后去运行某个函数)

以前我们强调必须把<script>标签放在最后,但是现在有了加载完毕事件后,就不用了

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
		function run1(){
			alert("该标签已加载完毕,该运行我了");
		}
		</script>
	</head>
	<body onload="run1()" >
		<!-- 
		在body标签加载完毕之后,弹出一个对话框
		 -->
	    我一定要把这件事情做好。
	</body>
</html>

效果:

 5.3.5、表单提交表事件(onsubmit)

表单提交事件:表单的提交按钮被点击时触发

注意;该事件需要返回Boolean类型的值来执行 提交/执行 表单数据的操作

  • 事件得到true,提交表达数据
  • 事件得到false,阻止表单数据提交

我们可以用正则对象来校验标签的name属性,如果符合正则返回true(提交),如果返回false(不能提交)

示例:

true

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			function run1(){
				alert("核实用户信息无误后才可成功提交");
				return true;	
			}
		</script>
	</head>
	<body>
		<!-- 
		 表单提交按钮被点击------执行run1
		 onsunbmit 用于表单的校验
		 该事件也能够控制表单的提交
		 true  允许表单提交
		 false  阻止表单提交
		 -->
		<form onsubmit="return run1()">
			<input type="text" name="uname" /><br>
			<input type="submit" value="提交" />
		</form>
		
	</body>
</html>

false: 

 5.3.6、键位弹起事件(onkeyup)

键位弹起事件:在组建中输入某些内容时,键盘键位弹起时触发

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			function run1(){
				alert("只要按下键松开手的那一刻就会弹出对话框,如果一直按着,就不会弹出");
			}
		</script>
	</head>
	<body>
		<!-- 
		用途,再输入信息时只要键位一弹起,我就可以校验信息 
		 -->
		<input type="text" onkeyup="run1()" >
	</body>
</html>

效果:

 5.3.7、常用鼠标事件

鼠标事件可以做特效,比如移入移除图片时

5.3.7.1、鼠标移入事件(onmouseover)

鼠标移入事件:鼠标移入某个元素组件时触发

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			function run1(){
				alert("鼠标移入了");
			}
		</script>
	</head>
	<body>
		<!-- 
		当鼠标移入文本框立马回触发函数 
		 -->
		<input type="text"     onmouseover="run1()" >
		
	</body>
</html>

效果:

5.3.7.2、鼠标移出事件(onmouseout)

鼠标移出事件:鼠标移出某个元素组件时触发

示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
			function run1(){
				alert("鼠标移出了");
			}
		</script>
	</head>
	<body>
		<!-- 
		当鼠标移出某一区域立马回触发函数 
		 -->
		<input type="text"     onmouseout="run1()" >
		
	</body>
</html>

效果:

5.4、JS事件的两种绑定方式

5.4.1、元素事件的句柄绑定

将事件以元素的方式写到标签内部,进而绑定对应函数。

示例1:【为事件绑定一个无参函数】

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
		function run1(){
			alert("run1");
		}
		
		</script>
	</head>
	<body>
		<input type="text"  value="123" onclick="run1()">
	</body>
</html>

示例2:【为事件绑定一个有参函数】

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
		function run1(str){
			alert(str);
		}
		function run2(obj){
			alert(obj.value);
		}
		function run3(){
			alert("run3");
		}
		</script>
	</head>
	<body>
		<!-- 有参函数,在函数书写的时候就需要给函数run方法赋值 
		然后底下在调用函数的时候,函数才可以去随意赋值
		如果方法没有赋值,调用函数后就没有值。
		
		
		-->
		<input type="text"  value="123" onclick="run1('你好')">
		<!-- this指代当前的标签,因为前面的obj对象已经获取了value值,所以最后返回当前标签属性的值 -->
		<input type="text"  value="456" onclick="run2(this)"><br>
		<!-- 同时绑定多个函数,执行顺序从左到右依次执行 -->
		<input type="text"  value="789" onclick="run1('在输出字符类型时;外双里单'),run2(this),run3()">
		
	</body>
</html>

外双里单

事件句柄绑定方式

优点:

  • ①开发便捷
  • ②传参方便
  • ③可以绑定多个参数

缺点:JS和HTML代码高度糅合在一起,不利于多部份协同开发

5.4.2、DOM绑定方式

使用DOM的属性方式绑定事件

示例1:【将下述绑定转为DOM 方式绑定】

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script>
		function run1(str){
			alert(str);
		}
		// function run2(str){
		// 	alert(str);
		// }
		// function run3(str){
		// 	alert(str);
		// }
		// 加载完毕,触发onload事件,此处用的DOM绑定方式(匿名函数)
		window.onload=function(){
			// 用DOM对象获取文本框id
			
			var a=document.getElementById("s1")
			// 用点击事件句柄绑定多个函数,这里可以用一个函数就可以了,因为每次调用格式一样
			a.onclick=run1("今天理解的不错");
			a.onclick=run1("记住两个问题晚上要处理");
			a.onclick=run1("加油,你一定可以的!");
		}
		
		
		
		
		</script>
	</head>
	<body>
		<!-- 需求:在也页面加载完毕时,一次返回,今天理解的不错,记住两个问题晚上要处理,加油,你一定可以的!
		步骤一:建立文本框,给文本框一个id属性,以方便最后用DOM对象获取ID值
		步骤二:建立三个函数,三个都为含参函数,参数值类型为字符串
		步骤三:用DOM方式绑定多个函数,并且内嵌点击事件
		步骤四:在匿名函数中用DOM对象获取文本框的id,然后在用点击事件调用三个函数
		 -->
		<input type="text" id="s1" name="张三">
		
	</body>
</html>


问题描述:

①函数的本质是什么?

②函数赋值的本质是什么?

②对象的意义是什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值