js教程(7)

一、事件监听(事件绑定)

1.事件

        事件是在编程时系统内发生的动作或者发生的事情,比如用户在网页上点击按钮,摁下键盘的某个键。

2.事件监听

        事件监听就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称之为绑定事件或者注册事件。

        比如鼠标经过显示下拉菜单,比如点击可以播放轮播图等。

3.语法

        元素对象.addeventListener('事件类型',要执行的函数);

事件监听三要素:

  • 事件源:那个dom元素被事件触发了,要获取dom元素;
  • 事件类型:用什么方式触发,比如鼠标单击click。鼠标经过mouseover等;
  • 事件调用的函数:要做什么事情 

代码示例:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
</head>
<body>
	<button>我被绑定了</button>
	<script>
		const button = document.querySelector("button");
		button.addEventListener("click",function(){
			alert("事件发生了!");
		});
	</script>
</body>
</html>

浏览器结果:

4.事件监听版本

  • DOM L0——事件源.on事件=function(){};
  • DOM L2——事件源.addEventListener(事件,事件处理函数);
  • 上述两种方式,on方式会被覆盖,而addEventListener方式可以绑定多次,拥有事件更多特性,推荐使用。

发展历史:

  • DOM L0——是DOM的发展的第一个版本;
  • DOM L1——DOM级别1于1998年10月1日成为W3C推荐标准;
  • DOM L2——使用addEventListener注册事件;
  • DOM L3——DOM3级事件模块在DOM2级事件的基础上重新定义了这些事件,也添加了一些新事件类型。

二、事件类型

1.鼠标事件

(1)click——鼠标点击;

(2)mouseenter——鼠标经过;

(3)mouseleave——鼠标离开;

2.焦点事件

(1)focus——获得焦点;

(2)blur——失去焦点;

3.键盘事件

(1)Keydown——键盘按下触发;

(2)Keyup——键盘抬起触发;

4.文本事件

(1)input——用户输入事件;

5.其他事件

(1)load——是在网页加载完毕后触发相应的事件处理程序;

(2)change——是指当前标签失去焦点并且标签的内容发生改变时触发事件处理程序。

三、事件对象

        事件对象也是个对象,这个对象里有事件触发时的相关信息,例如鼠标点击事件中,事件对象就存了鼠标点在那个位置等信息。

        事件对象可以判断用户按下了那个键,比如按下回车键可以发布消息,也可以判断鼠标点击了哪个元素,从而做相应的操作。

语法

元素.addEventListener('click',function(e){});

        在事件绑定的回调函数的第一个参数就是事件对象,一般命名为event、ev、e。

事件对象常用属性 

1.type——获取当前的事件类型;

2.clientX/clientY——获取光标相对于浏览器可见窗口左上角的位置;

3.offsetX/offsetY——获取光标相对于当前DOM元素左上角的位置;

4.key——用户按下的键盘键的值,现在不提倡使用keyCode;

四、环境对象

        环境对象指的是函数内部特殊的变量this,它代表着当前函数运行时所处的环境,弄清除this的指向,可以让我们的代码更简洁。

注意点
  1. 函数的调用方式不同,this指代的对象也不同;
  2. 谁调用,this就是谁——这是判断this指向的粗略规则,在开发中我们调用的多了就会判断this指向谁;
  3. 直接调用函数,其实相当于时window.函数,这时this指代window;

五、回调函数

        如果将函数A做为参数来传递给函数B时,我们称函数A为回调函数,代码示例:

const button = document.querySelector("button");
button.addEventListener("click",function(){
	console.log("我是回调函数");
});
  1.  把函数当做另一个函数的参数传递,这个函数就叫回调函数;
  2. 回调函数本质还是函数,只不过把它当成参数使用;
  3. 使用匿名函数做为回调函数比较常见。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Midjourney订阅攻略/Midjourney的基本参数和命令

AI绘画软件Midjourney使用原理 Midjourney是一个由Midjourney研究实验室开发的先进的人工智能程序&#xff0c;它可以根据用户的文本输入生成精美的图像。Midjourney的主要原理是通过收集大量已有的作品数据&#xff0c;对这些数据进行算法解析&#xff0c;它就可以通过关键词生…

【机器学习】函数

sigmoid函数 import matplotlib.pyplot as plt import numpy as npdef sigmoid(x):return 1/(1np.exp(-x))def plot_sigmoid():# param:起点&#xff0c;终点&#xff0c;间距x np.arange(-10, 10, 0.1) #起点&#xff0c;终点&#xff0c;间距y sigmoid(x)plt.plot(x, y)plt…

【Web】浅聊Hessian反序列化之打Spring AOP——JNDI

目录 前言 简单分析 EXP 前言 前文&#xff1a;【Web】浅聊Java反序列化之Rome——关于其他利用链-CSDN博客 前文里最后给到一条HotSwappableTargetSource利用链&#xff0c;就是我们今天PartiallyComparableAdvisorHolder链子的前半段(触发恶意类的toString方法)&#xf…

蓝桥杯练习01卡片化标签

卡片化标签页 介绍 选项卡功能在前端开发中特别常见&#xff0c;作为设置选项的模块&#xff0c;每个选项卡代表一个活动的区域&#xff0c;点击不同的区域&#xff0c;即可展现不同的内容&#xff0c;这样既能节约页面的空间又能提升页面性能。 本题需要在已提供的基础项目中…

基于SpringBoot+Vue中国陕西民俗网(源码+部署说明+演示视频+源码介绍)

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

[论文笔记] Gradient Surgery for Multi-Task Learning

【强化学习 137】PCGrad - 知乎 多任务学习(multi task):任务权重、loss均衡、梯度下降那点事 - 知乎 ICLR 2020 rejected submission:Yu T, Kumar S, Gupta A, et al. Gradient surgery for multi-task learning[J]. arXiv preprint arXiv:2001.06782, 2020. mul…

开源堡垒机Jumpserver安装教程

前言:堡垒机的应用场景 公司内有若干台服务器,既有windows的也有linux的, 提供有ERP,OA,Web,报表等等各种服务,往往需要远程登录到服务器上去做运维,但如果给root或者administrator权限,很容易出现不知道谁操作了的问题.如果不同人设置不同账号,又账号过多,权限不足等等其他问题…

HTML5球体下落粒子爆炸特效

HTML5球体下落粒子爆炸特效&#xff0c;源码由HTMLCSSJS组成&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面 下载地址 HTML5球体下落粒子爆炸特效

【模拟】【C++算法】2826. 将三个组排序

LeetCode2826. 将三个组排序 给你一个下标从 0 开始长度为 n 的整数数组 nums 。 从 0 到 n - 1 的数字被分为编号从 1 到 3 的三个组&#xff0c;数字 i 属于组 nums[i] 。注意&#xff0c;有的组可能是 空的 。 你可以执行以下操作任意次&#xff1a; 选择数字 x 并改变它的…

易基因:人类大脑的单细胞DNA甲基化和3D基因组结构|Science

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 高通通量表观基因组分析技术可用于阐明大脑中细胞复杂性的基因调控程序。5-甲基胞嘧啶 (5mCs)是哺乳动物基因组中最常见的修饰碱基&#xff0c;大多数5mCs发生在胞嘧啶-鸟嘌呤二核苷酸&a…

聚合音乐网-播放器网站源码

源码简介 MKOnlineMusicPlayer 是一款全屏的音乐播放器 UI 框架&#xff08;为避免侵权&#xff0c;已移除所有后端功能&#xff09;。 前端界面参照 QQ 音乐网页版进行布局&#xff0c;同时采用了流行的响应式设计&#xff0c;无论是在PC端还是在手机端&#xff0c;均能给您…

HarmonyOS NEXT应用开发—使用绘制组件实现自定义进度动画

介绍 本示例介绍使用绘制组件中的Circle组件以及Path组件实现实时进度效果。该场景多用于手机电池电量、汽车油量、水位变化等动态变化中。 效果预览图 使用说明 加载完成后初始显示进度为0%&#xff0c;颜色为红色&#xff0c;且有充电、放电两个按钮。点击充电按钮&#x…

AcWing 1510:楼梯 ← 浮点数二分

【题目来源】http://poj.org/problem?id2507https://www.acwing.com/problem/content/1512/【题目描述】 一个街道两侧有两栋楼&#xff0c;现在有如图所示两楼梯 x&#xff0c;y。 两个楼梯分别如图放置。 已知两个楼梯的长度和他们交点离地面的高度&#xff0c;求两栋楼之间…

B树B+树,字典树详解,哈夫曼树博弈树

目录 B树&#xff1a;B-Tree B树 字典树&#xff1a;Trie Tree 哈夫曼树 博弈树 B树&#xff1a;B-Tree 多路平衡搜索树 1.M阶B树&#xff0c;就是M叉&#xff08;M个指针&#xff09;。 2.每个节点内记录个数<M-1。 3.根节点记录个数>1。 4.其余节点内记录个数&…

【C语言】Leetcode 35. 搜索插入位置

文章目录 题目思路代码呈现 题目 链接: link 思路 这题较简单&#xff0c;就是找到目标元素的下标&#xff0c;或者插入位置&#xff0c;如果不熟练的话&#xff0c;一开始想到的肯定是冒泡排序&#xff0c;就是一个一个查下去&#xff0c;然后返回下表&#xff0c;这种冒泡排…

简单的溯源取证

环境准备: Linux虚拟机:内网部署蜜罐探测系统 。(192.168.XX.XX) windows虚拟机:有FTP弱口令漏洞的web服务 (受害机器) (192.168.125.134) kali Linux虚拟机:攻击机服务端 。 (192.168.125.130) MAC:管理员电脑。(192.168.XX.XX) 一、利用kailiLinuxmsf生成windows木马文件…

【Leetcode-19.删除链表的第N个节点】

题目详情&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1…

【linux】进程间通信1--管道

文章目录 进程间通信是什么&#xff1f;如何做&#xff1f; 管道匿名管道命名管道 进程间通信 是什么&#xff1f; 进程间通信&#xff08;Inter-Process Communication&#xff0c;IPC&#xff09;是指在操作系统中&#xff0c;不同的进程之间进行数据交换、信息传递和同步操…

双向队列广搜

适用情况 适用的情况&#xff1a;解决最短路径问题 当我们已起始点和终点时&#xff0c;我们可以采用双向队列广搜去解决问题。所谓的双向队列广搜&#xff0c;就是让起点向终点搜索&#xff0c;终点向起点搜索&#xff0c;二者同时开始&#xff0c;那么当它们第一次1相遇时&am…