事件(JavaScript中的事件)

事件的类型

事件的定义

指的是文档或者浏览器窗口中发生的一些特定交互瞬间。我们可以通过侦听器(或者处理程序)来预定事件,以便事件发生的时候执行相应的代码。

事件类型

事件类型是一个用来说明发生什么类型事件的字符串。像鼠标悬浮,按下键盘等。

事件目标

事件目标是发生的事件或与之相关的对象。当讲事件时,我们必须同时指定类型和目标。像 window 上的 load 事件或者链接的 click 事件。

事件处理程序或事件监听程序

我们用户在页面中进行的点击这个动作,鼠标移动的动作,网页页面加载完成的动作等,都可以称之为事件名称,即:click、mousemove、load 等都是事件的名称。
响应某个事件的函数则称为事件、处理程序,或者叫做事件侦听器。

事件对象

事件对象是与特定事件相关且包含有关该事件详细信息的对象。事件对象作为参数传递给事件处理程序函数。
所有的事件对象都有用来指定事件类型的 type 属性和指定事件目标的 target 属性。每个事件类型都为其相关的事件对象定义一组属性。

事件传播

事件传播是浏览器决定那个对象触发其事件处理程序的过程

事件模型

内联模型

这种模型是最传统接单的一种处理事件的方法。在内联模型中,事件处理函数是 HTML 标签的一个属性,用于处理指定事件。
虽然内联在早期使用较多,但它是和 HTML 混写的,并没有与 HTML 分离。

脚本模型

由于内联模型违反了 HTML 与 JavaScript 代码层次分离的原则。为了解决这个问题,我们可以在 JavaScript 中处理事件。
这种处理方式就是脚本模型。

DOM2 模型

“DOM2 级事件”定义了两个方法,用于添加事件和删除事件处理程序的操作:
addEventListener()removeEventListener()。所有 DOM 节点中都包含这两个方法,并且它们都接受 3 个参数;事件名函数冒泡捕获的布尔值(true 表示捕获,false 表示冒泡)

传统的事件类型

鼠标事件

HTML文档的head部分的JavaScript代码

		<script type="text/javascript">
		//鼠标事件
		/*	onclick:		单击事件			仅鼠标左键按下
			ondblclick:		双击事件
			onmouseenter:	鼠标悬浮
			onmouseover:	鼠标悬浮
			onmousedown:	鼠标按钮被按下		鼠标左右键皆可
			onmouseleave:	鼠标离开
			onmouseout:		鼠标离开
			onmouseup:		鼠标按键被松开
			onmousemove:	鼠标移动
			onmousewheel:	鼠标滑轮事件	*/
			window.onload=function(){
			//获取页面元素
				//onclick:		单击事件			仅鼠标左键按下
				var myClick=document.getElementsByClassName('div1')[0];
					myClick.onclick=function(){
						myClick.style.background="skyblue";
						alert('你单击了按钮');
					}
					
				//ondblclick:		双击事件
				var myDblclick=document.getElementsByClassName('div1')[1];
					myDblclick.ondblclick=function(){
						myDblclick.style.background="pink";
						alert('你双击了按钮');
					}
					
				//onmouseenter:	鼠标悬浮
				var myMouseEnter=document.getElementsByClassName('div1')[2];
					myMouseEnter.onmouseenter=function(){
						myMouseEnter.style.background="lawngreen";
						alert('鼠标悬浮(onmouseenter)');
					}
					
				//onmouseenter:	鼠标悬浮
				var myMouseOver=document.getElementsByClassName('div1')[3];
					myMouseOver.onmouseover=function(){
						myMouseOver.style.background="red";
						alert('鼠标悬浮(onmouseenter)');
					}
					
				//onmousedown:	鼠标按钮被按下		鼠标左右键皆可
				var myMouseDown=document.getElementsByClassName('div1')[4];
					myMouseDown.onmousedown=function(){
						myMouseDown.style.background="yellow";
						alert('鼠标按钮被按下');
					}
				
				//onmouseleave:	鼠标离开
				var myMouseLeave=document.getElementsByClassName('div1')[5];
					myMouseLeave.onmouseleave=function(){
						myMouseLeave.style.background="hotpink";
						alert('鼠标离开(onmouseleave)');
					}
					
				//onmouseout:	鼠标离开
				var myMouseOut=document.getElementsByClassName('div1')[6];
					myMouseOut.onmouseout=function(){
						myMouseOut.style.background="cornflowerblue";
						alert('鼠标离开(onmouseout)');
					}	
					
				//onmouseup:		鼠标按键被松开
				var myMouseUp=document.getElementsByClassName('div1')[7];
					myMouseUp.onmouseup=function(){
						myMouseUp.style.background="tomato";
						alert('鼠标按键被松开');
					}	
					
				//onmousemove:	鼠标移动
				var myMouseMove=document.getElementsByClassName('div1')[8];
					myMouseMove.onmousemove=function(){
						myMouseMove.style.background="orangered";
						alert('鼠标移动');
					}
				
				//onmousewheel:	鼠标滑轮事件
				var myMouseWheel=document.getElementsByClassName('div1')[9];
					myMouseWheel.onmousewheel=function(){
						myMouseWheel.style.background="plum";
						alert('鼠标滑轮事件');
					}
			}
		</script>

body中的代码块

		<button class="div1">鼠标单击</button>
		<button class="div1">鼠标双击</button>
		<button class="div1">鼠标悬浮(onmouseenter)</button>
		<button class="div1">鼠标悬浮(onmouseover)</button>
		<button class="div1">鼠标按钮被按下</button>
		<button class="div1">鼠标离开(onmouseleave)</button>
		<button class="div1">鼠标离开(onmouseout)</button>
		<button class="div1">鼠标按键被松开</button>
		<button class="div1">鼠标移动</button>
		<button class="div1">鼠标滑轮事件</button>

键盘事件

keydown:按键按下

keyup:按键抬起

keypress:按键按下抬起

body中的代码块

input id="name" type="text" onkeydown="myKeyDown()" onkeyup="myKeyUp()">

HTML文档的head部分的JavaScript代码

//	keydown:按键按下
//	keyup:按键抬起

/*输出输入的字符*/
	function myKeyDown() {
		 console.log(document.getElementById('name').value);
	}
/*按键结束,字体转换为大写*/
	function myKeyUp() {
		  var text1 = document.getElementById('name').value;
		  document.getElementById('name').value = text1.toUpperCase();
	}

事件对象 Event

JavaScript的Event对象用来描述JavaScript事件,Event代表事件状态,如事件发生的元素,键盘状态,鼠标位置和鼠标按钮状态。一旦事件发生,便会生成Event对象,如单击一个按钮,浏览器的内存中就产生相应的event对象。

Event对象的主要属性和方法、

Event是JavaScript的重要事件,event代表事件的状态,专门负责对事件的处理,其属性和方法能帮助用户完成很多和用户交互的操作。

type:事件的类型,就是HTML标签属性中,没有on前缀之后的字符串,例如Click就代表单击事件。

srcElement:事件源,就是发生事件的元素

button:声明了被按下的鼠标键,是一个整数。0代表没有按键,1代表鼠标左键,2代表鼠标右键,4代表鼠标的中间键,如果按下了多个鼠标键,就把这些值加在一起,所以3就代表左右键同时按下。

clientX/clientY:是指事件发生的时候,鼠标的横纵坐标,返回的是整数,它们的值是相对于包容窗口的左上角生成的。

offsetX/offsetY:鼠标指针相对于源元素位置,可确定单击image对象的哪个像素。

altKey,ctrlKey,shiftKey:指鼠标事件发生时,是否同时按住了Alt,Ctrl或者shift键,返回一个布尔值。

keyCode:返回keydown和keyup事件发生时,按键的代码以及keypress事件的Unicode字符。

//JavaScript代码块
window.onload=function(){
	var text1=document.getElementById('txt1');
	text1.onkeypress=function(event){
		alert(event.keyCode);
	}
}
//body中的代码
<input type="text" id="txt1" />

fromElement、toElement:前者是指mouseover事件移动过的文档元素,后者指在mouseout事件中鼠标移动到的文档元素。

表单事件

onsubmit 提交事件

onfocus 获取焦点事件

onblur 失去焦点事件

提交事件例子

<!--JavaScript代码块-->
<script type="text/javascript">
			window.onload=function(){
				
				//获取form表单,从而添加提交事件
				var form=document.getElementById('form1');
//				form.onsubmit=function(){
//					//表示通过name获取表单元素的值
//					var name=document.form1.text1.value;
//					alert(name);
//					
//				}
				document.getElementById('form1').onsubmit=function(){
					var name=document.form1.text1.value;
					alert(name);
				}
			}
</script>
<!--body中的代码-->
<body>
		<form name="form1" action="" method="post" id="form1">
			<input type="text" value="" name="text1" />
			<br />
			<input type="submit" name="submit_01" value="提交"/>
		</form>
</body>

获取焦点和失去焦点例子

<!--JavaScript代码块-->
<script type="text/javascript">
			//问题:鼠标离开(失去焦点事件)文本框1的时候,将其文本框值转换为大写
			//onblur: 表示的是失去焦点事件
			function blur_01(value){
//				alert(value);
				//函数之间的调用
				TextUpperCase(value);  //在一个函数中调用另外的一个函数
			}
			//以下这个函数是用来转换为大写的函数
			function TextUpperCase(value){
				document.write(value.toUpperCase());
			}
			function focus_01(color){
//				document.getElementById('fname').style.background=color;
				var color1=document.getElementById('fname');
				color1.style.background=color;
			}
</script>
<!--body中的代码-->
<!--blur_01(this.value): this指向的是事件的目标 在这里是第一个input文本框-->
<p>请输入你的英文名字: 
    <input type="text" id="fname" onfocus="focus_01('skyblue');" onblur="blur_01(this.value)">
</p>
<p>请输入你的年龄:
    <input type="text" id="age">
</p>

2018年12月13日17:55:05

猜你喜欢

转载自blog.csdn.net/a_lllll/article/details/84992671