【JavaScript】常见的事件(鼠标、键盘、表单等)

news2024/9/22 1:40:27

💻【JavaScript】常见的事件 🏠专栏:JavaScript
👀个人主页:繁星学编程🍁
🧑个人简介:一个不断提高自我的平凡人🚀
🔊分享方向:目前主攻前端,其他知识也会阶段性分享🍀
👊格言:☀️没有走不通的路,只有不敢走的人!☀️
👉让我们一起进步,一起成为更好的自己!!!🎁

文章目录

  • 【JavaScript】常见的事件(鼠标、键盘、表单等)
    • 一. 常见的鼠标事件
    • 二. 常见的键盘事件
    • 三. 常见的表单事件
    • 四. 常见的触摸事件
    • 五. 常见的拖拽事件

【JavaScript】常见的事件(鼠标、键盘、表单等)

一. 常见的鼠标事件

鼠标事件描述
onclick鼠标点击左键触发
ondblclick鼠标左键双击触发
oncontextmenu鼠标右键单击触发
onmouseover鼠标移入触发
onmouseout鼠标移出触发
onmouseenter鼠标移入事件
onmousele鼠标移出事件
onfocus获得鼠标焦点触发
onblur失去鼠标焦点触发
onmousemove鼠标移动触发
onmouseup鼠标抬起触发
onmousedown鼠标按下触发

onmouseenter和onmouseleaveonmouseover和onmousemove的区别:

  • onmouseover 和 onmouseout 在鼠标移入到子元素上依然可以触发
  • onmouseenter 和 onmouseleave 在鼠标移入子元素的时候,不会触发

二. 常见的键盘事件

键盘事件

  • 可以给所有元素绑定键盘事件, 不是所有元素都能触发键盘事件
  • 一般给 window/document/表单元素 绑定键盘元素
  • 键盘事件不考虑中文
键盘事件描述
onkeydown键盘按下事件
onkeyup键盘抬起事件
onkeypress键盘键入事件

注意onkeypress事件按下的内容必须和出现的内容一致

三. 常见的表单事件

表单事件描述
onfocus表单空间获取焦点
onblur表单失去焦点
onchange表单内容改变
oninput表单输入事件
onsubmit表单提交事件
onreset表单重置事件

注意点

  1. onchange:文本框要求获取焦点和失去焦点内容不一样的时候会触发
  2. oninput:只要输入或删除就会触发
  3. 表单提交重置都必须绑定在form表单域上面

四. 常见的触摸事件

触摸事件描述
ontouchstart开始触摸
ontouchmove触摸移动
ontouchend触摸结束

五. 常见的拖拽事件

拖拽事件描述
ondragstart开始拖拽
ondrag拖拽移动
ondragend结束拖拽
ondragenter拖拽元素进入拖放元素范围内触发
ondragleave拖拽元素离开拖放元素范围触发
ondragover拖拽元素完全进入元素范围内触发
ondragdrop拖拽元素在拖放元素范围内放手的时候触发

注意:如果想要让drop事件生效, 需要阻止 dragover事件的默认行为

<p></p>
<!-----分割线----->
p.ondrop = function() {
    console.log("把元素拖进来撒手");
};

案例:拖拽元素

分析思路

/*
    案例 拖拽
        1. 什么时候触发效果
            1) 鼠标按下
            2) 鼠标抬起
            3) 鼠标移动
        2. 什么范围触发效果
            1) 鼠标按下     div
            2) 鼠标抬起     div
            3) 鼠标移动     document
        3. 什么效果
            1) 鼠标按下     保证div可以拖拽
            2) 鼠标抬起     保证div不可以拖拽
            3) 鼠标移动     设置div top left   
            获取 移动的时候 光标距离窗口左上角的位置  -  初始的时候 光标距离元素左上角的位置
  */
<style>
    div {
        width: 100px;
        height: 100px;
        background-color: pink;
        position: absolute;
    }
</style>
<body>
    <div></div>
</body>
<script>
    // 0 获取元素
    var div = document.querySelector("div");
    // 0 准备变量
    var flag = false; // 默认元素不可以拖拽
    var startX = 0;
    var startY = 0;
    // 1. 鼠标按下
    div.onmousedown = function (e) {
        // 开启开关
        flag = true;
        // 记录刚开始的时候鼠标距离元素左上角的位置
        startX = e.offsetX;
        startY = e.offsetY;
    };
    // 2. 鼠标抬起
    div.onmouseup = function () {
        // 开关关闭
        flag = false;
    };
    // 3. 鼠标移动
    document.onmousemove = function (e) {
        // 如果开关关闭 不能拖拽
        if (!flag) {
            // 如果代码进入这里,表示开关关闭,也就是鼠标抬起,不能拖拽
            return;
        }
        // 表示可以拖拽
        console.log("可以拖拽");
        // 设置 div 的top left
        // 获取 移动的时候 光标距离窗口左上角的位置  -  初始的时候 光标距离元素左上角的位置
        var x = e.clientX - startX;
        var y = e.clientY - startY;
        div.style.top = y + "px";
        div.style.left = x + "px";
    };
</script>

效果图

请添加图片描述

结束语

希望对您有一点点帮助,如有错误欢迎小伙伴指正。
👍点赞:您的赞赏是我前进的动力!
⭐收藏:您的支持我是创作的源泉!
✍评论:您的建议是我改进的良药!
一起加油!!!💪💪💪

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

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

相关文章

Xilinx 7系列FPGA之Artix-7产品简介

数字化革命改变了对新手和有丰富经验的 FPGA 设计人员的期望。为了在航空航天和国防、通信基础设施、医疗、工业和消费电子等对成本敏感的市场中竞争&#xff0c;需要在广泛的密度范围内提供强大的高性能功能组合。在不牺牲性能的情况下&#xff0c;开发人员必须能够扩展使用模…

python和netlogo软件模拟病毒传播仿真模型(一)

目前国内在网络舆情仿真建模中所使用的仿真平台主要有 Netlogo、Anylogic、Matlab、Vensim 等&#xff0c;netlogo软件是一款比较通用的。 但是他是由logo语言构成&#xff0c;语言逻辑很让人抓马。 这里python 中的mesa可以实现其中一部分&#xff0c;这里看一下病毒传播仿真模…

WPF 笔记3——在XAML中给对象属性赋值

看B站刘铁猛老师视频学习WPF XAML语言是从xml文件派生而来&#xff0c;是声明式语言&#xff0c;一个标签就表示声明了一个对象。 对象的值可以存储在对象的字段中&#xff0c;也可存储在对象的属性中&#xff1b; 通过给对象的属性赋值&#xff0c;可以在赋值时检查值的合法…

Redis6学习笔记【part2】基本数据类型与常用命令

一.单线程多路IO复用技术 Redis是单线程多路IO复用技术。多路复用是指使用一个线程来检查多个文件描述符&#xff08;Socket&#xff09;的就绪状态&#xff0c;比如调用 select 和 poll 函数&#xff0c;传入多个文件描述符&#xff0c;如果有一个文件描述符就绪&#xff0c;则…

【make、makefile】

前言 打怪升级第&#xff1a;26天 | make、Makefile make是一条命令&#xff0c;Makefile是一个文件&#xff0c; make是一个命令工具&#xff0c;是一个解释Makefile文件中指令的命令工具。 makefile是一个围绕依赖关系和依赖方法构造的一个自动化编程工具&#xff0c; 一个…

博客部署教程

1:安装Docker yum install -y yum-utils device-mapper-persistent-data lvm2 //安装必要工具yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //设置yum源yum install -y docker-ce //下载dockersystemctl start docker //启…

excel函数技巧:两个查询函数的用法比较 下篇

VLOOKUP和LOOKUP这对高频函数的较量注定是场持久战。在前两个回合的较量中&#xff0c;VLOOKUP占据上风&#xff0c;此番更要乘胜追击。新一轮较量&#xff0c;即刻开战&#xff01;***ROUND 03 交叉查询什么是交叉查询&#xff1f;我们可以通过一个查找值查找多个字段。如果被…

Android 深入系统完全讲解(26)

AudioTrack 构造过程 每一个音频流对应着一个 AudioTrack 类的一个实例&#xff0c;每个 AudioTrack 会在创建时注册到 AudioFlinger 中&#xff0c;由 AudioFlinger 把所有的 AudioTrack 进行混合&#xff08;Mixer&#xff09;&#xff0c;然后输送到 AudioHardware 中进行播…

spice auth过程分析

1、客户端选择认证方法 Client authentication method selection抓包分析{Authentication selected by client: Spice (1)}代码分析spice_channel_send_link(channel);if (!spice_channel_recv_link_hdr(channel) ||!spice_channel_recv_link_msg(channel) ||!spice_channel_re…

Allegro如何设计线圈操作指导

Allegro如何设计线圈操作指导 在做PCB设计的时候,在特殊场合时候需要设计线圈,Allegro支持快速设计出线圈,如下图 具体操作如下 选择File选择Change Editor

实现树莓派homeassistant OS远程控制内网穿透--ddnsto教程

一、两种穿透服务 1、molohub 一种是论坛提供的molohub&#xff0c;但是可能因为自己这边的网络原因在配置过程中一直无法连接到服务器&#xff0c;无法绑定github&#xff0c;因此放弃molohub的方法。如下图所示。molohub教程如下&#xff0c;不再赘述。 molohub的Github教程…

ejson4cpp——一个使用极致简单且性能可比rapidjson的C++json解析库

文章目录ejson4cpp快速开始要求安装与引入开始使用常见用法API介绍通过命名风格识别API宏定义FROM_JSON_FUNC&FROM_JSON_FRIEND_FUNCTO_JSON_FUNC&TO_JSON_FRIEND_FUNCAUTO_GEN_NON_INTRUSIVE&AUTO_GEN_INTRUSIVEENABLE_JSON_COUTFromJSON系列函数参数说明使用示例…

WireShark从入门到精通

一、什么是WireShark&#xff1f;Wireshark 是一个开源抓包工具或者叫网络嗅探器&#xff0c;用于分析网络流量和分析数据包。其实WireShark以前的名字不叫WireShark&#xff0c;以前都叫做Ethereal&#xff0c;于1998 年首次开发&#xff0c;直到 2006 年才改为 Wireshark。Wi…

powerdns 系列之二 PowerDNS Authoritative Server

PowerDNS Authoritative Server 权威服务器&#xff0c;直接查询数据库去尝试解析&#xff0c;数据库中若不存在此记录&#xff0c;则直接返回空结果。 os: centos 7.8.2003 pnds: 4.7.3 安装 pdns 安装 pdns auth yum install epel-release yum-plugin-priorities curl -o…

Alibaba微服务组件Nacos注册中心学习笔记

1. 什么是 Nacos 什么是 Nacos官方网站:什么是 Nacos 官方&#xff1a;一个更易于构建云原生应用的动态服务发现(Nacos Discovery )、服务配置(Nacos Config)和服务管理平台。 集 注册中心配置中心服务管理 平台 Nacos 的关键特性包括: 服务发现和服务健康监测 动态配置服…

Vue前端项目【尚品汇】

Vue前端项目【尚品汇】1. 说明2. 对项目创建3.结构4. 项目运行起来时&#xff0c;浏览器自动打开5.关闭ESLint校验功能1. 说明 学习完了Vue后并没有一个整体的项目&#xff0c;让我明白前端的工程化开发。因此在B站找了一个开源的项目进行练手&#xff0c;并在这里进行记录。 …

深度学习理论介绍

在机器学习理论介绍中说过&#xff0c;深度学习是机器学习的一种技术&#xff0c;下面我们具体来看下。 1、 定义 深度学习首先是一种机器学习。深度学习的基础&#xff0c;叫做神经网络&#xff0c;这本身就是一种机器学习算法。 深度神经网络&#xff08;Deep Neural Netwo…

产品小白如何从模仿开始学习Axure

​有一些小伙伴有这样的疑问&#xff0c;如果想学习产品经理的知识&#xff0c;但是从来对产品经理完全没有认识&#xff0c;该怎样去开始学习呢&#xff1f; 对于这种情况的小伙伴&#xff0c;有个建议是可以先从axure的学习入手。 那么问题又来了&#xff0c;应该如何开始axu…

只靠石墨烯电池,撑不起两轮电动车的“高端梦”

文|智能相对论作者|陈明涛在两轮电动车上&#xff0c;“石墨烯”电池已经成为品牌标配。雅迪、爱玛、台铃等都有搭载石墨烯电池的车型&#xff0c;雅迪的TTFAR石墨烯电池已经迭代到第4代&#xff0c;而第3代Plus电池搭载在冠能3 E9 PRO上完成量产上市&#xff1b;爱玛、台铃都和…

(侯捷C++)1.1面向对象高级编程(上)

一.C编程简介 1.C历史 B语言 → C语言 → C语言&#xff08;new C → C with Class → C&#xff09; 面向对象的语言&#xff1a;C、Java、C# 2.C演化 C 98(1.0) → C 03 → C 11(2.0) → C 14 Class两个经典分类&#xff1a;有指针&#xff08;Complex类为例&#xff0…