【学习笔记43】JavaScript的事件

news2024/11/29 8:57:47

JavaScript的事件

    • 一、JS的事件
      • 1、事件的三要素
      • 2、DOM 0级事件绑定
      • 3、DOM 2级事件绑定(事件监听)
    • 二、浏览器事件
    • 三、鼠标事件
      • 1. 左键单击:click
      • 2. 双击事件:dblclick
      • 3.右键事件:contextmenu
      • 4. 鼠标按下事件:mousedown
      • 5. 鼠标抬起事件:mouseup
      • 6. 鼠标移动事件:mousemove
      • 7. 鼠标的移入和移出
    • 四、键盘事件
      • 1. 键盘抬起事件:keyup
      • 2. 键盘按下事件:keydown
      • 3. 键盘按下抬起事件:keypress
    • 五、表单事件
      • 1. 获得焦点事件:focus
      • 2. 失去焦点事件:blur
      • 3. 文本框内容改变时触发:change
      • 4. 文本框输入内容时触发:input
    • 六、事件对象
    • 七、获取鼠标按下时的坐标
    • 八、键盘按键


一、JS的事件

  • 在某一个时刻, 用户(在页面)做了某一件事, 我要给出的反馈

1、事件的三要素

1. 事件源
2. 事件类型
3. 事件处理函数

        <div></div>
        <style>
            div {
                width: 100px;
                height: 100px;
                background-color: pink;
            }
        </style>

2、DOM 0级事件绑定

  • 事件源.on + 事件类型 = 事件处理函数
  • 弊端: 无法绑定多个同类型的事件, 后边新写的事件, 会覆盖掉原有的事件
        var oDiv = document.querySelector('div');

        oDiv.onclick = function () {
            console.log('绑定给div的第一个事件');
        }
        oDiv.onclick = function () {
            console.log('绑定给div的第二个事件');
        }

在这里插入图片描述

3、DOM 2级事件绑定(事件监听)

  • 事件源.addEventListener(‘事件类型’, 事件处理函数, 布尔值(可选))
        var oDiv = document.querySelector('div');

        oDiv.addEventListener('click', function () {
            console.log('绑定给div的第一个事件');
        })

        oDiv.addEventListener('click', function () {
            console.log('绑定给div的第二个事件');
        })

在这里插入图片描述

二、浏览器事件

  • onload: 当页面所有资源加载完毕时执行
	<!DOCTYPE html>
	<html lang="en">
	<head>
	    <meta charset="UTF-8">
	    <meta http-equiv="X-UA-Compatible" content="IE=edge">
	    <meta name="viewport" content="width=device-width, initial-scale=1.0">
	    <title>Document</title>
	    <script>
	        // var oDiv = document.querySelector('div');
	        // console.log(oDiv);           // null
	
	        window.onload = function () {
	            // 当页面所有资源加载完毕时执行
	
	            var oDiv = document.querySelector('div');
	            console.log(oDiv);
	        }
	    </script>
	</head>
	<body>
	    <div>我的是div标签</div>
	</body>
	</html>

三、鼠标事件

        <div>
            <div class="box"></div>
        </div>
        <style>
            * {
                padding: 0;
                margin: 0;
            }
            div {
                width: 200px;
                height: 200px;
                background-color: pink;
            }
            .box {
                width: 100px;
                height: 100px;
                background-color: green;
            }
        </style>

1. 左键单击:click

        var oDiv = document.querySelector('div');

        oDiv.onclick = function () {
            console.log('单击元素时触发');
        }

在这里插入图片描述

2. 双击事件:dblclick

  • 300ms内连续点击两次鼠标
        var oDiv = document.querySelector('div');

        oDiv.ondblclick = function () {
            console.log('双击元素时触发');
        }

在这里插入图片描述

3.右键事件:contextmenu

  • 鼠标右键单击
        var oDiv = document.querySelector('div');

        oDiv.oncontextmenu = function () {
            console.log('鼠标右键单击时触发');
        }

在这里插入图片描述

4. 鼠标按下事件:mousedown

  • 鼠标左键按下的时候会触发的(哪怕鼠标没有抬起)
        var oDiv = document.querySelector('div');

        oDiv.onmousedown = function () {
            console.log('鼠标按下时触发');
        }

在这里插入图片描述

5. 鼠标抬起事件:mouseup

  • 鼠标左键抬起的时候会触发的
        var oDiv = document.querySelector('div');

        oDiv.onmouseup = function () {
            console.log('鼠标抬起时触发');
        }

在这里插入图片描述

6. 鼠标移动事件:mousemove

  • 鼠标在元素内部移动时触发
        var oDiv = document.querySelector('div');

        oDiv.onmousemove = function () {
            console.log('鼠标移动时触发');
        }

在这里插入图片描述

7. 鼠标的移入和移出

  • mouseover和mouseout两个方法,移入元素和移出元素子盒子时都会触发
  • mouseenter和mouseleave两个方法,只有在移入元素时触发
        var oDiv = document.querySelector('div');

        // 鼠标移入事件1      鼠标的移动到元素内部时触发
        oDiv.onmouseover = function () {
            console.log('onmouseover:鼠标移入时触发');
        }

        // 鼠标移出事件1      鼠标移动出元素内部时触发
        oDiv.onmouseout = function () {
            console.log('onmouseout:鼠标移出时触发');
        }


        // 鼠标移入事件2
        oDiv.onmouseenter = function () {
            console.log('onmouseenter:鼠标移入事件2');
        }

        // 鼠标移出事件2
        oDiv.onmouseleave = function () {
            console.log('onmouseleave:鼠标移出事件2');
        }

在这里插入图片描述

四、键盘事件

  • document.on键盘事件的事件类型 = function () {}

1. 键盘抬起事件:keyup

        document.onkeyup = function () {
            console.log('键盘按键抬起');
        }

2. 键盘按下事件:keydown

        document.onkeydown = function () {
            console.log('键盘某个按键被按下');
        }

3. 键盘按下抬起事件:keypress

        document.onkeypress = function () {
            console.log('键盘按下抬起时触发');
        }

五、表单事件

        文本框: <input type="text" id="inp">

1. 获得焦点事件:focus

        var inp = document.querySelector('#inp')

        inp.onfocus = function () {
            console.log('当前文本框获得焦点');
        }

在这里插入图片描述

2. 失去焦点事件:blur

        var inp = document.querySelector('#inp')
  
        inp.onblur = function () {
            console.log('当前文本框失去焦点');
        }

在这里插入图片描述

3. 文本框内容改变时触发:change

        var inp = document.querySelector('#inp')
   
        inp.onchange = function () {
            console.log('当前文本框内容被更改');
        }

在这里插入图片描述

4. 文本框输入内容时触发:input

        var inp = document.querySelector('#inp')
   
        inp.oninput = function () {
            console.log('当前文本框正在输入内容');
        }

在这里插入图片描述

六、事件对象

  • 当事件触发时, 携带一些信息
  • 当前时间的事件源是谁?
  • 鼠标点击的位置在哪里(点击事件)
  • 键盘按下了那个按键(键盘事件)
        <button>点击</button>
        var oBtn = document.querySelector('button');

        oBtn.onclick = function (event) {
            console.log(event);
        }

在这里插入图片描述

七、获取鼠标按下时的坐标

相对于
1. 事件源
2. 页面
3. 浏览器窗口

        <div></div>
        <style>
            * {
                padding: 0;
                margin: 0;
            }

            body {
                height: 5000px;
            }

            div {
                width: 200px;
                height: 200px;
                background-color: pink;
                position: fixed;
                top: 100px;
            }
        </style>
        var oDiv = document.querySelector('div');

        oDiv.onclick = function (e) {
            // 1. 获取相对于事件源的鼠标坐标点
            console.log('相对于事件源 X 轴', e.offsetX);
            console.log('相对于事件源 Y 轴', e.offsetY);

            // 2. 获取相对于页面的坐标点
            console.log('---------------------------------');
            console.log('相对于页面的 X 轴', e.pageX);
            console.log('相对于页面的 Y 轴', e.pageY);

            // 3. 获取相对于浏览器窗口的坐标点
            console.log('---------------------------------');
            console.log('相对于浏览器窗口的 X 轴', e.clientX);
            console.log('相对于浏览器窗口的 Y 轴', e.clientY);
        }

在这里插入图片描述

八、键盘按键

  • e.key ===> 返回按下的按键
  • e.keyCode ===> 返回按下的按键的进制码
  • keyCode已经被移除, 但是很多主流浏览器还支持使用
    <input type="text" id="inp">
        var oIpt = document.querySelector('input');
        
        oIpt.onkeyup = function (e) {
            console.log(e.key, e.keyCode);
        }

在这里插入图片描述

判断:Ctrl+A

        var oIpt = document.querySelector('input');
        
        oIpt.onkeyup = function (e) {
            if (e.ctrlKey && e.key === 'a') {
                console.log('按下了Ctrl+A键');
            }
        }

在这里插入图片描述

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

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

相关文章

编写Servlet代码获取页面body中json数据

目录 1、在 maven 项目中引入 jackson 2、编写代码 ① 介绍 jackson 提供操作 json 数据的类和方法 ② 确定 json 数据格式&#xff0c;并写出对应的类 ③ 编写servlet代码 3、使用 postman 发送数据观察结果 4、拓展 readValue 方法返回构造对象的过程 本文使用maven项目&…

HTML5详解

文章目录1 网页基本标签1.2 标题标签1.3 段落标签1.4 换行标签1.5 水平线标签1.6 字体样式标签1.7 注释和特殊符号2 图像、超链接、网页布局2.1 图像2.2 超链接标签2.3 块元素和行内元素2.4 网页布局3 列表、表格、媒体元素、iframe内联框架3.1 列表3.2 表格3.3 媒体元素3.4 if…

Unity 之 安卓堆栈跟踪和日志工具 (Android Logcat | 符号表解析Bugly捕获)

Unity 之 日志解析工具 Android Logcat一&#xff0c;工具集成1.1 注意事项1.2 导入插件二&#xff0c;连接设备2.1 使用USB连接2.2 无线连接三&#xff0c;实用功能介绍3.1 通用介绍3.2 堆栈跟踪工具 -- 解析Bugly捕获报错一&#xff0c;工具集成 Logcat是开发者必备的工具&a…

ps,查看Linux系统进程信息小帮手-尚文网络xUP楠哥

~~全文共852字&#xff0c;阅读需约5分钟。 进Q群11372462&#xff0c;领取专属报名福利&#xff0c;包含云计算学习路线图代表性实战训练大厂云计算面试题资料! ps命令在Linux系统中非常的常用&#xff0c;主要是帮助我们查看系统进程的详细信息&#xff0c;其中&#xff0c;…

Jetson Nano如何安装 onnxruntime gpu Python包

Jetson Nano 可以直接 pip 安装 cpu 版本的 onnxruntime 用 pypi 的源&#xff0c;直接安装 onnxruntime-gpu 或者 onnxruntime_gpu 都会报找不到对应的架构 aarch64 本来以为要用官方库编译一下 https://github.com/microsoft/onnxruntime 幸运的是&#xff0c;NVIDIA官方帮…

地级市市场化指数+樊纲市场化指数(包含分省、市两份数据)

一、地级市市场化指数 1、数据来源&#xff1a;各省份年鉴以及地级市统计公报 2、时间跨度&#xff1a;1998-2020年 3、区域范围&#xff1a;422&#xff08;城市和区&#xff09; 4、指标说明&#xff1a; 依据樊纲市场化各指标&#xff0c;结合各地级市的相关数据算出来…

Typecho中handsome主题如何增加侧边导航栏

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…

【心电信号】小波阙值心电信号去噪【含Matlab源码 2188期】

⛄一、小波阈值法去噪概述 电能质量扰动信号的噪声大多以高斯白噪声的形式存在&#xff0c;利用小波变换对信号进行多分辨率分解&#xff0c;由于小波变换具有去除数据相关性的特点&#xff0c;故可以将有用信号与噪声的能量分离开来。信号中有效的信息主要集中在较大的小波系…

【Vue】Vuex-store

Vuex是什么&#xff1f; Vuex是实现组件全局状态(数据&#xff09;管理的一种机制&#xff0c;可以方便的实现组件之间数据的共享。 像一个仓库一样&#xff01; 使用Vuex统一管理状态的好处&#xff1f; 1.能够在vuex中集中管理共享的数据&#xff0c;易于开发和后期维护 2.能…

二叉查找树(1)-二叉树-数据结构和算法(Java)

文章目录1 前言1.1 二叉查找树定义1.2 二叉查找树的性质2 基本实现2.1 API2.2 实现代码2.2.1 数据表示2.2.2 查找2.2.3 插入3 分析4 有序性相关方法与删除操作4.1 最大键和最小键4.2 向上取整和向下取整4.2.1 向下取整floor()4.2.2 向上取整ceiling()4.3 选择select()4.4 排名r…

微服务框架 SpringCloud微服务架构 3 Eureka 3.1 提供者与消费者

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式&#xff0c;系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构3 Eureka3.1 提供者与消费者3.1.1 一些概念3.1.2 一个问题3.1.3 总结3 Eur…

【Hack The Box】linux练习-- Pit

HTB 学习笔记 【Hack The Box】linux练习-- Pit &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月27日&#x1f334; &#x1f36d;…

单片机如何控制外设?

单片机如何控制外设&#xff1f; 单片机不是直接控制外设的&#xff0c;而是通过配置片上外设寄存器来控制其输出和检测高低电平&#xff0c;进而控制外围器件。 单片机如何配置寄存器的&#xff1f; 下图是单片机驱动 点亮发光二极管 内核从flash里面加载读取指令。内核根据指…

将DataFrame中符合指定条件的数据替换为指定的值:mask()函数

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 将DataFrame中符合指定条件的数据 替换为指定的值&#xff1a;mask()函数 选择题 下列说法错误的是? import pandas as pd myDF pd.DataFrame({"A":[1,2,3], "B":[4,…

java EE初阶 — 如何进行多线程编程

文章目录1.java如何进行多线程编程1.1 最基础的多线程代码1.2 线程的优势2.java中创建线程的方法2.1 继承Thread 重写run2.2 实现Runnable 接口2.3 使用匿名的内部类&#xff0c;继承 Thread2.4 使用匿名类。继承 Runnable2.5 使用 Lambda 表达式&#xff08;最简答、最推荐&am…

2000-2020年迪博上市公司内部控制指数

2000-2020年迪博上市公司内部控制指数 1、时间&#xff1a;2000-2020年 2、指标包括&#xff1a; 证券代码、证券简称、辖区、证监会行业、申万行业、内部控制指数、报告期 3、指标解释&#xff1a; 上市公司内部控制指数是结合国内上市公司实施内部控制体系的现状&#x…

java——电商购物平台

1.java编译环境的创建&#xff0c;与所需要用到的插件 (1) 选择的编译器为2022版本的intellij idea 首先新建一个空项目 同时,创建完之后,我们点击 文件 -> 项目结构 进入项目结构,点击项目,选择好你想要的jdk版本,若没有,可以在idea中下载,这里我使用openjdk-19, 点击模…

Python适合0基础菜鸟学吗

前言 经常有小伙伴问&#xff1a;Python适合0基础初学编程的人学吗&#xff1f;今天我们就来从Python的功能和特性方面看一下&#xff0c;Python是否能让新人快速上手。 1、非常适合。我觉得刚开始学编程&#xff0c;负担越少越好&#xff0c;应该尽快能做出东西来。刚开始学…

day02 linux常用命令

day02 linux 第一章 Linux常用命令 第一节 进程相关命令 1. 查看进程状态 1.1 命令的使用 ps命令是用于查看进程状态的命令&#xff0c;它常和e参数(对应单词entire&#xff0c;表示全部。具体指显示系统中全部的进程信息。)&#xff0c;以及f参数(对应单词full-formate&a…

Node.js 入门教程 13 在 Node.js 中从命令行接收输入

Node.js 入门教程 Node.js官方入门教程 Node.js中文网 本文仅用于学习记录&#xff0c;不存在任何商业用途&#xff0c;如侵删 文章目录Node.js 入门教程13 在 Node.js 中从命令行接收输入13 在 Node.js 中从命令行接收输入 如何使 Node.js CLI 程序具有交互性&#xff1f; 从…