✿✿✿JavaScript --- 事件

news2024/11/18 2:51:19

1.事件相关概念

2. js中注册监听(事件绑定)的方式

(1)在定义标签时,添加事件名称属性。属性值是js代码(js代码会被自动封装到一个function函数的方法体中)

(2)通过js获取元素对象,再添加事件。

补充:获取到标签对象后,常用的属性 。

(3)通过 addEventListener() 方法 来添加事件

3.js中事件的种类

(1)焦点事件:针对表单项

(2)点击事件

(3)键盘事件

(4)鼠标事件

鼠标移动事件案例:金箍棒变大变长

 (5)表单事件:form

 (6)加载与卸载事件

(7)其他事件:针对表单

4.JS事件对象 event中的属性和功能

5.元素的CSS样式和自带属性的设置


1.事件相关概念

  • 事件源:事件发生的组件。
  • 监听器:一个对象。当事件源上发生了事件,就执行对象中的某些方法。
  • 注册监听(事件绑定):将监听器绑定到事件源上,监听事件的发生。
  • 事件类型:键盘事件,鼠标事件,点击事件等

2. js中注册监听(事件绑定)的方式

(1)在定义标签时,添加事件名称属性。属性值是js代码(js代码会被自动封装到一个function函数的方法体中)

(2)通过js获取元素对象,再添加事件。

补充:获取到标签对象后,常用的属性 。


<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<h1 id="myh">一个标题</h1>
		<h1 id="myh2">一个标题</h1>
		<h1 id="myh4"><span>一行文本</span></h1>
	</body>
	<script>
		var myh = document.getElementById("myh");
		//获取或设置标签之间的文本
		myh.innerText = "这是新的文本";
		var myh2 = document.getElementById("myh2");
		myh2.innerHTML = "<a href='#'>一个连接</a>"
		var myh4 = document.getElementById("myh4");
		var t1 = myh4.innerText;
		var t2 = myh4.innerHTML;
		alert(t1);
		alert(t2);
	</script>
</html>

(3)通过 addEventListener() 方法 来添加事件

语法:document.getElementById("myBtn").addEventListener("click",事件处理函数);    移除事件 值1:事件名 值2:事件处理函数.    

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<button onclick="show()">一个按钮</button>
		<button ondblclick="show2()">一个按钮</button>
		<button id="btn1">一个按钮3</button>
		<h1 class="myh1">0001</h1>
		<h1 class="myh1">0002</h1>
		<h1 class="myh1">0003</h1>
		<h1 class="myh1">0004</h1>
		<h1 class="myh1">0005</h1>
		<h1 class="myh1">0006</h1>
		<h1 class="myh1">0007</h1>
		<h1 class="myh1">0008</h1>
		<h1 class="myh1">0009</h1>
		<h1 class="myh1">0010</h1>

		<button id="btn4">一个按钮4</button>

		<button id="btn5">一个按钮5</button>
	</body>
	<script>
		//事件绑定的方式1:直接在HTML元素上绑定事件

		function show() {
			alert("HELLO");
		}

		function show2() {
			alert("HELLO2222");
		}

		//事件绑定的方式2:
		var btn = document.getElementById("btn1");
		btn.onclick = function() {
			//alert("点击了")
			//btn.style.background = "yellow";
			//this表示你绑定了事件的元素对象
			this.style.background = "red";
		}
		//解绑事件
		btn.onclick = null;
		var h1Arr = document.getElementsByClassName('myh1');
		for (var i = 0; i < h1Arr.length; i++) {
			h1Arr[i].onclick = function() {
				//this表示,你当前点击这个元素
				this.style.color = "red";
			}
		}

		//

		var btn4 = document.getElementById("btn4");
		var hehe = function() {
			this.style.height = "50px";
			this.style.width = "150px";
		}
		btn4.addEventListener("click", hehe)

		//解绑事件
		btn4.removeEventListener('click', hehe);

		var btn5 = document.getElementById("btn5");

		btn5.addEventListener("click", function() {
			alert("1111");
		})

		btn5.addEventListener("click", function() {
			alert("2222");
		})
	</script>
</html>

3.js中事件的种类

(1)焦点事件:针对表单项

  • onfocus                                 元素获得焦点。 
  • onblur                                    元素失去焦点
  • oninput                                  当你往表单中内容发生变化时就触发 
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<input type="text" name="username" value="请输入用户名" onfocus="clearText()" onblur="check()">
		<input type="text" name="username" value="请输入用户名" oninput="show()">
	</body>

	<script>
		function clearText() {
			var ele = document.getElementsByName("username")[0];
			ele.value = '';
		}
		function check() {
			alert("校验填写的内容");
		}
		function show() {
			console.log("事件触发了")
		}
	</script>
</html>

(2)点击事件

  • onclick                                    当用户点击某个对象时调用的事件句柄。 
  • ondblclick                               当用户双击某个对象时调用的事件句柄。 
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<button onclick="show(this)">一个按钮</button>
	</body>
	<script>
		function show(obj) {
		 alert("点击了")
		}
	</script>

</html>

(3)键盘事件

  • onkeydown                              某个键盘按键被按下。
  • onkeyup                                   某个键盘按键被松开。 
  • onkeypress                              某个键盘按键被按下并松开。 

通过事件对象event中的keyCode属性,可以获取键盘某个键的键码。其实就是ASCII码表中对按键的编码。例:e.keyCode

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<!-- event 事件对象 -->
		<input type="text" onkeydown="show(event)">
		<input type="text" onkeyup="show2(event)">
		<input type="text" onkeypress="show3(event)">
		搜索:<input type="text" value="" onkeypress="show4(event,this)">
	</body>

	<script>
		function show(e) {
			//onkeydown 事件 不区分大小写,获取的是大写字母 ACSII码值
			var code = e.keyCode
			if (code == 65) {
				alert("往左跑");
			}
		}

		function show2(e) {
			//onkeydown 事件 不区分大小写,获取的是大写字母 ACSII码值
			var code = e.keyCode
			alert("松开了");
		}

		function show3(e) {
			//onkeydown 事件 区分大小写
			var code = e.keyCode
			alert("按下并松开:" + code);
		}

		function show4(e, obj) {
			//onkeydown 事件 区分大小写
			var code = e.keyCode
			//enter 13
			if (code == 13) {

				alert("搜索:" + obj.value)
			}
		}
	</script>
</html>

(4)鼠标事件

  • onmousedown                          鼠标按钮被按下。 
  • onmouseup                               鼠标按键被松开。 
  • onmouseover                            鼠标移到某元素之上。 
  • onmouseout                              鼠标从某元素移开。 
  • onmousemove                          鼠标被移动。 

鼠标按下时,通过事件对象 event中的属性  button 或 which 可以获取鼠标按键的编号。例:e.button 事件对象中的 button属性可以获取鼠标按键的编号,    例: e.which 也可以获取鼠标的按键编号 1 左键  3滚轮   3右键

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			div {
				height: 300px;
				width: 300px;
				background-color: red;
			}

			/* 	div:hover {
				background-color: blue;
			} */
		</style>

	</head>
	<body>
		<div id="d1" onmouseover="sb1()" onmouseout="sb2()" onmousemove="sb3()"></div>
	</body>
	<script>
		var myDiv = document.getElementById("d1");
		myDiv.onmousedown = function(e) {
			// e.which  1 左键 2 滚轮 3 右键
			//e.button  0 左键 1 滚轮 2 右键
			var code = e.button;
			alert(code);
			if (code == 0) {
				//alert("hehe:");
				this.style.background = "yellow";
			}
		}
		function sb1() {
			myDiv.style.height = "400px"
			myDiv.style.width = "400px"
			myDiv.style.background = "pink";
		}
		function sb2() {
			myDiv.style.height = "600px"
			myDiv.style.width = "600px"
			myDiv.style.background = "green";
		}
		function sb3() {
			console.log("鼠标移动了")
		}
	</script>
</html>

鼠标移动事件案例:金箍棒变大变长

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			#d1 {
				height: 50px;
				width: 15px;
				background-color: red;
				border-top-style: solid;
				border-bottom-style: solid;
				border-top-color: yellow;
				border-top-width: 10px;
				border-bottom-width: 10px;
				border-bottom-color: yellow;
			}
		</style>
	</head>
	<body>
		<div id="d1" onmousemove="show(this)">
		</div>
		<script>
			function show(obj) {
				var w = obj.getBoundingClientRect().width;
				var h = obj.getBoundingClientRect().height;
				obj.style.width = ++w + "px";
				obj.style.height = ++h + "px";
			}
		</script>
	</body>
</html>

 (5)表单事件:form

  • onsubmit                                    确认按钮被点击。  
  • onreset                                       重置按钮被点击。
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<!-- 
		 onsubmit="return false" 返回false 表单不会提交
		 onsubmit="return trues" 返回truess 表单提交		 
		 -->
		<form action="#" method="get" onsubmit="return checkForm()">
			用户名:<input type="text" name="username" value="" placeholder="请输入用户名6-18字母" onblur="checkUserName()">
			<span id="usp"></span>
			<br>
			密码:<input type="password" name="password" value="" placeholder="请输入密码6-18数字" onblur="checkPassword()">
			<span id="psp"></span>
			<br>
			<input type="submit" value="提交">
			<input type="reset" value="重置">
		</form>
		<script>
			function checkForm() {
				return checkUserName() && checkPassword();
			}

			function checkUserName() {
				//定义正则
				var regx = /^[a-zA-Z]{6,18}$/;
				var value = document.getElementsByName("username")[0].value;
				var flag = regx.test(value);
				var usp = document.getElementById("usp");
				if (flag) {
					usp.innerHTML = "<b style='color:green'>用户名格式正确✔</b>"
				} else {
					usp.innerHTML = "<b style='color:red'>用户名格式错误✘</b>"
				}
				return flag;
			}

			function checkPassword() {
				//定义正则
				var regx = /^[0-9]{6,18}$/;
				var value = document.getElementsByName("password")[0].value;
				var flag = regx.test(value);
				var psp = document.getElementById("psp");
				if (flag) {
					psp.innerHTML = "<b style='color:green'>密码格式正确✔</b>"
				} else {
					psp.innerHTML = "<b style='color:red'>密码格式错误✘</b>"
				}
				return flag;
			}
		</script>
	</body>
</html>

 (6)加载与卸载事件

  • onload                                        一张页面或一幅图像完成加载。 
  • onunload                                    用户退出页面。 其他浏览器不支持 IE支持

(7)其他事件:针对表单

  • onchange                                   域的内容被改变。 比如下拉框
  • onselect                                      文本被选中。

4.JS事件对象 event中的属性和功能

属性

  • currentTarget                             获取的是绑定了该事件的元素对象
  • target                                         获取的是触发了该事件的元素对象 
  • type                                            获取事件类型
  • keyCode                                    当绑定了键盘事件,可以从事件对象中获取按键的键码(ASCII码)
  • which/button                              当绑定了鼠标事件,可以从事件对象中获取鼠标按键的键码 0 左键 1滚轮 2右键

方法

  • e.stopPropagation()                    阻止事件冒泡
  • e.preventDefault()                       阻止元素的默认行为

5.元素的CSS样式和自带属性的设置

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<button onclick="show(this)">一个按钮</button>
	</body>
	<script>
		function show(obj) {
			//obj.style.height = "150px";
			//css的属性名如果有 - 连接,把横杠去掉,把横杠后面的第一个字母变大写。
			//例子:background-color 变为 backgroundColor
			//obj.style.backgroundColor = "red";
			//方式2:设置元素的css样式
			obj.style.cssText = "color:red;width:100px;border-color:yellow";
		}
		//元素自带属性,可查文档
	</script>
</html>

(小编也在努力学习更多哟!以后再慢慢分享的啦!)

希望对友友们有所帮助!!!
                                                                                 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96331.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ADI Blackfin DSP处理器-BF533的开发详解54:CVBS输出-DSP和CH7024的应用详解(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 CVBS OUT 视频输出 硬件实现原理 CVBS_OUT 子卡板连接在 ADSP-EDU-BF53x 开发板的扩展端口 PORT3 和 PORT4 上&#xff0c;板卡插入时&#xff0…

window10 下Tomcat安装步骤

目录先安装JDK根据JDK选择tomcat版本下载安装设置系统变量运行测试先安装JDK 略过 根据JDK选择tomcat版本 打开CMD窗口&#xff0c;运行java -version查看本机JDK版本 C:\Users\admin>java -version java version "11.0.17" 2022-10-18 LTS Java(TM) SE Runtime E…

python函数讲解进阶

关于python函数的基本知识可以点击“python函数讲解” 目录 一.函数多返回值 思考 二.函数参数种类 1.位置参数 2.关键字参数 3.缺省参数 4.不定长参数 位置传递 关键字传递 总结 三.匿名函数 函数作为参数传递 lambda匿名函数 一.函数多返回值 思考 运行之后&…

Python抓取电商平台数据 / 采集商品评论 / 可视化展示 词云图...

前言 大家早好、午好、晚好吖 ❤ ~ 我给大家准备了一些资料&#xff0c;包括: 2022最新Python视频教程、Python电子书10个G &#xff08;涵盖基础、爬虫、数据分析、web开发、机器学习、人工智能、面试题&#xff09;、Python学习路线图等等 直接在文末名片自取即可&#x…

[附源码]Node.js计算机毕业设计公交电子站牌管理系统软件Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

多模态在医疗中的应用

多模态是把要检索的模态融合起来&#xff0c;做整体的检索&#xff0c;查询和检索的必须至少有一个模态是相同的&#xff0c;也就是要查询和检索的模态都已经在融合模态里了。 跨模态是检索结果和查询的模态是不同&#xff0c;如图像检索文本&#xff0c;视频和音频。跨模态检索…

2022-12-17 TCP/IP 协议栈_2

TCP/IP 协议栈_2前言一、TCP/IP协议栈四层协议系统二、封装和分用总结前言 既然要学习计算机网络编程, 就不得不提计网祖师爷 W Richard Stevens, 天妒英才, 先生于1999年就早早陨落. 不知多少人凭着先生所著 “TCP/IP详解” 以及 “UNIX网络编程” 吃的盆满钵满. 而至今可说还…

深入浅出 - Rust 所有权与内存管理机制

一、从变量说起 fn main() {// 基本数据类型let a 5;let b a;// 指针let ptr_a &a;let ptr_b &b;println!("a value {}", a);println!("b value {}", b);println!("ptr_a value {:p}", ptr_a);println!("ptr_b value {:p}…

未来笔试重点(1)

一起成为更优秀的人 1.数组笔试重点考察 1.1整型数组与sizeof 1.2字符数组与sizeof 1.3sizeof与字符串 1.4strlen与字符串 2.指针笔试重点考察 2.1指针与sizeof 2.2指针与strlen sizeof与整型数组 int a[] { 1,2,3,4 };printf("%d\n", sizeof(a));printf(…

NMS与Soft NMS算法解析以及numpy实现

1. NMS算法 1.1 什么是NMS算法 NMS全称为Non Maximum Suppression&#xff0c;中文意思是非极大值抑制&#xff0c;字面意思就是不是极大值的元素被抑制掉&#xff0c;其实就是筛选出局部最大值得到最优解。NMS算法被广泛运用于目标检测算法处理网络输出的边界框。 1.2 为什…

浅谈Linux内核页面换入换出

【推荐阅读】 浅谈linux 内核网络 sk_buff 之克隆与复制 深入linux内核架构--进程&线程 了解Docker 依赖的linux内核技术 怎么在Windows下使用Makefile文件 浅析linux内核网络协议栈--linux bridge 0x00内存页面分类与换入换出规则 内存页面分为用户页面和内核页面。…

GDT践行(第一期):起床---运动--阅读

这里记录每周GDT践行记录.【2022】年第【51】周的第【6】天 封面图 第三部分&#xff1a;起床---运动--阅读 ❝ 小贴士&#xff1a; 在学校&#xff0c;出租房&#xff0c;宾馆&#xff0c;工位很多因素导致 学习区&#xff0c;运动区 卧室 都是同一个地方 环境导致你彻底彻底糊…

[附源码]Python计算机毕业设计Django课程在线测评系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

JVM部分知识点

目录 JVM主要组成部分及其作用&#xff1f; JAVA程序运行机制详情 JVM运行时的数据区 堆和栈的区别&#xff1f; Java垃圾回收机制 Java中有哪些引用类型&#xff1f; 如何判断对象是否可以被回收&#xff1f; JVM中的永久代会发生垃圾回收吗&#xff1f; JVM有哪些垃圾…

我国航空煤油行业发展趋势:燃油附加费复收 或将缓解企业经营压力

根据观研报告网发布的《中国航空煤油市场现状深度研究与投资前景分析报告&#xff08;2022-2029年&#xff09;》显示&#xff0c;航空煤油是石油产品之一&#xff0c;别名无臭煤油&#xff0c;主要由不同馏分的烃类化合物组成。航空煤油密度适宜&#xff0c;热值高&#xff0c…

【C语言】浮点型的存储方式

目录 一、浮点型和整型存储方式一样吗&#xff1f; 二、浮点型的存储规则 2.1 S&#xff0c;M&#xff0c;E求法 2.2 如何存放&#xff33;&#xff0c;&#xff2d;&#xff0c;&#xff25; 2.2.1 IEEE 754规定 2.2.2 特别的规定 2.2.3 验证 2.3 取出规则 2.3…

改造冰蝎马,实现免杀之default_aes php

本专栏是笔者的网络安全学习笔记&#xff0c;一面分享&#xff0c;同时作为笔记 文章目录 文章目录文章目录前文链接前言效果目标密码验证功能免杀后话前文链接 WAMP/DVWA/sqli-labs 搭建burpsuite工具抓包及Intruder暴力破解的使用目录扫描&#xff0c;请求重发&#xff0c;漏…

[附源码]Python计算机毕业设计黑格伯爵国际英语贵族学校官网Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

5G无线技术基础自学系列 | 单站点验证概述

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 单站点验证是指在基站硬件安装调试完成…

RNA-seq 详细教程:可视化(12)

学习内容 了解如何为可视化准备数据了解如果利用可视化来探索分析结果火山图可视化热图可视化可视化结果 当我们处理大量数据时&#xff0c;以图形方式显示该信息以获得更多信息&#xff0c;可能很有用。在本课中&#xff0c;我们将让您开始使用探索差异基因表达数据时常用的一…