〖大前端 - 基础入门三大核心之JS篇㊵〗- DOM事件监听及onxxx的使用

news2024/9/30 9:19:27
  • 说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费如需要项目实战或者是体系化资源,文末名片加V!
  • 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作,目前在公司担任研发部门CTO。
  • 荣誉:2022年度博客之星Top4、2023年度超级个体得主、谷歌与亚马逊开发者大会特约speaker全栈领域优质创作者

  • 🏆 白宝书系列
    • 🏅 启示录 - 攻城狮的自我修养
    • 🏅 Python全栈白宝书
    • 🏅 ChatGPT实践指南白宝书
    • 🏅 产品思维训练白宝书
    • 🏅 全域运营实战白宝书
    • 🏅 大前端全栈架构白宝书


文章目录

  • ⭐ 事件监听
    • 🌟 onxxxx属性
      • ✨ 常见的鼠标事件监听
      • ✨ 常见的键盘事件监听
      • ✨ 常见的表单事件监听
      • ✨ 常见的页面事件监听

⭐ 事件监听

DOM允许我们书写JavaScript代码以让HTML元素对事件作出反应

事件:用户与网页的交互动作(如:当用户点击元素时、当鼠标移动到元素上时、当文本空的内容被改变时、当键盘在文本框中被按下时、当网页已加载完毕时。。。)

监听:让极端及随时能够发现这个事件,从而执行程序员预先编写的一些程序

设置事件监听的方法主要有onxxxx和addEventListener()两种


🌟 onxxxx属性

设置onxxxx属性是最简单的设置事件监听的方法。比如onclick属性,代表当鼠标单击事件。

示例代码:

oBox.onclick = function (){
    //点击盒子时,将执行这里的语句
}

举个例子,点击盒子弹出一个alert:

代码如下:

<!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>
    <style>
        #box {
            width: 200px;
            height: 200px;
            background-color: #ccc;
        }
    </style>
</head>
<body>
    <div id="box"></div>
    <script>
        var oBox = document.getElementById('box');
        oBox.onclick = function () {
            alert('点击盒子弹出这个弹框');
        }
    </script>
</body>
</html>

image-20230418154635209


✨ 常见的鼠标事件监听

事件名事件描述
onclick当鼠标单机某个对象
ondblclick当鼠标双击某个对象
onmousedown当某个鼠标按键在某个对象上被按下
onmouseup当某个鼠标按键在某个对象上被松开
onmousemove当某个鼠标按键在某个对象上被移动
onmouseenter当鼠标进入某个对象(相似事件onmouseover)
onmouseleave当鼠标离开某个对象(相似事件onmouseout)
onmousewheel当鼠标滚轮滚动

一些鼠标事件监听的示例代码:

oBox.onclick = function () {
    console.log('鼠标单击');
}
oBox.ondblclick = function () {
    console.log('鼠标双击');
}
oBox.onmousedown = function () {
    console.log('鼠标按下');
}
oBox.onmouseup = function () {
    console.log('鼠标松开');
}
oBox.onmousemove = function () {
    console.log('鼠标移动');
}
oBox.onmouseenter = function () {
    console.log('鼠标移入');
}
oBox.onmouseleave = function () {
    console.log('鼠标移出');
}
oBox.onmousewheel = function () {
    console.log('鼠标滚轮滚动');
}

image-20230419105841276


✨ 常见的键盘事件监听

事件名事件描述
onkeypress当某个键盘的键被按下(系统按钮(如箭头键、退格键…)和功能键(如F1、F2…)无法得到识别)
onkeydown当某个键盘的键被按下(系统按钮和功能键可以识别,并且会先于onkeypress发生)
onkeyup当某个键盘的键被松开

难点在于onkeypress和onkeydown的区别

一些键盘事件监听的示例代码:

<body>
    姓名:
    <input type="text" id="nameField">
    <script>
        var nameField = document.getElementById('nameField');

        nameField.onkeydown = function () {
            console.log('键盘按钮被按下');
        };
        nameField.onkeypress = function () {
            console.log('键盘按钮被按下(不能识别箭头退格等)');
        };
        nameField.onkeyup = function () {
            console.log('键盘按钮松开');
        };
    </script>
</body>

image-20230419133835864


✨ 常见的表单事件监听

事件名事件描述
onchange当用户改变了域的内容(比如修改文本框的内容,然后鼠标在空白处点击一下时会修改完成,此时会触发该事件)
oninput当用户正在改变域的内容(重点是正在,非常类似onkeydown的功能)
onfocus当某元素获得焦点(比如tab键或鼠标点击)
onblur当某元素失去焦点
onsubmit当表单被提交
onreset当表单被重置

先来了解一个扩展小知识——获取表单的dom节点:

先通过访问元素的常见方法获取到这个表单,再通过表单+打点的方式获取到其中的子节点

示例代码:

<body>
    <form action="" id="myform">
        <p>
            姓名:
            <input type="text" name="nameField">
        </p>
        <p>
            年龄:
            <input type="text" name="ageField">
        </p>
    </form>
    <script>
        var myform = document.getElementById('myform');  //先获取到这个表单
        var nameField = myform.nameField;   //再通过表单+打点的方式获取到其中的子节点
        var ageField = myform.ageField;  //再通过表单+打点的方式获取到其中的子节点
    </script>
</body>

一些表单事件监听的示例:

<body>
    <form action="" id="myform">
        <p>
            姓名:
            <input type="text" name="nameField">
        </p>
        <p>
            年龄:
            <input type="text" name="ageField">
        </p>
        <p>
            <input type="submit" name="submitField">
        </p>
        <p>
            <input type="reset" name="resetField">
        </p>
    </form>
    <script>
        var myform = document.getElementById('myform');  //先获取到这个表单
        var nameField = myform.nameField;   //再通过表单+打点的方式获取到其中的子节点
        var ageField = myform.ageField;  //再通过表单+打点的方式获取到其中的子节点

        nameField.onchange = function () {
            console.log('您修改了姓名');
        };
        nameField.oninput = function () {
            console.log('您正在修改姓名');
        };
        ageField.onfocus = function () {
            console.log('年龄文本框获得焦点');
        };
        ageField.onblur = function () {
            console.log('年龄文本框失去焦点');
        };
        myform.onsubmit = function () {
            alert('您的表单被提交');
        };
        myform.onreset = function () {
            alert('您的表单被重置');
        };
    </script>
</body>

image-20230419142310320


✨ 常见的页面事件监听

onload当页面或图像被加载完成
onunload当用户退出页面
事件名事件描述

示例代码:

window.onload = function () {
    console.log('页面加载完成');
};
window.onunload = function () {
    console.log('退出页面');
};

更详细的页面事件监听在学到BOM时再介绍。

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

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

相关文章

【Python】给出n个数,找出这n个数的最大值,最小值,和。

问题描述 给出n个数&#xff0c;找出这n个数的最大值&#xff0c;最小值&#xff0c;和。 样例输入 5 1 3 -2 4 5 Data 样例输出 5 -2 11 n int(input()) # 从用户输入中读取一个整数&#xff0c;将其赋给变量n# 从用户输入中读取一行字符串&#xff0c;使用空格分割字符串&a…

vite vue3配置axios

准备 参考 安装axios yarn add axios中文官网 src下新建request文件夹&#xff0c;该文件下新建index.ts import axios from axios; import { ElMessage } from element-plus;// const errorCodeType function (code: number): string { // let errMessage: string 未知…

echarts 树形图

用echarts 实现树形图&#xff0c;图节点为矩形&#xff0c;线为直线&#xff0c;节点可以点击并实现跳转页面。 <!DOCTYPE html> <html> <body> <div> <div id"chart" style"width: 80%;height: 700px;"></div> <…

算法训练 第八周

一、最长公共前缀 1.水平扫描 首先将第一个字符串设为最长公共前缀&#xff08;prefix&#xff09;。遍历字符串数组中的每个字符串&#xff0c;滚动更新遍历到的字符串和记录的公共前缀的公共前缀。具体代码如下&#xff1a; class Solution {public String longestCommonPr…

听GPT 讲Rust源代码--src/librustdoc

题图来自 Why is building a UI in Rust so hard? File: rust/src/librustdoc/core.rs 在Rust中&#xff0c;rust/src/librustdoc/core.rs文件的作用是实现了Rustdoc库的核心功能和数据结构。Rustdoc是一个用于生成Rust文档的工具&#xff0c;它分析Rust源代码&#xff0c;并生…

小程序制作(超详解!!!)第十六节 小程序的基本架构

1.题目描述 创建一个包含:首页、教学、科研、资讯和关于我们5个标签的小程序&#xff0c;每个标签都有对应的页面、图标和标签文字&#xff0c;点击某个标签将切换到对应的页面&#xff0c;同时该标签的图标和文字颜色都会发生变化页面的标题也发生相应的变化&#xff0c;而其…

Python绘图库Plotly用超简单代码实现丰富的数据可视化图表

文章目录 前言Plotly 概述散点图时间序列分析 高级绘图功能散点图矩阵关系热图自定义主题 在 Plotly 图表工坊&#xff08;Plotly Chart Studio&#xff09;里编辑技术交流关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Pyt…

有依次对应关系的数组X、Y、Z,如何排序其中一个X数组,使得另外的数组还与排序完成后的数组相对应(C语言实现)

1. 目的 有依次对应关系的数组X、Y、Z&#xff0c;排序其中一个X数组&#xff0c;使得另外的数组还与排序完成后的数组相对应&#xff0c;并打印出排序完成后的X、Y、Z数组。 2. 具体实现 以下面的这个对应关系为例&#xff0c;进行相应编程实现。 X [3.7,7.7,-6.6,1.5,-4.5…

时间序列中的6大类10种异常值处理方法(从根源上提高预测精度)

一、本文介绍 本文介绍的内容是在时间序列中异常值处理的方法&#xff0c;当我进行时间序列分析建模收集数据的过程中&#xff0c;往往都存在着一些特数据情况导致数据中存在着一些异常值&#xff0c;这些异常值往往会导致模型识别到不正常的模式从而无法准确的预测&#xff0…

【代码随想录】刷题笔记Day33

前言 Day33虽说是一个月&#xff0c;但是从第一篇开始实际上已经过了8个月了&#xff0c;得抓紧啊 46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 前面组合就强调过差别了&#xff0c;这道题是排序&#xff0c;因此每次要从头到尾扫&#xff0c;结合used数组 class So…

NUCLEO-L552ZE SWD外部接口定义

如果使用ST-LINK调试器对外部MCU编程需要将CN4上的跳线拔下。

SQL DELETE 语句:删除表中记录的语法和示例,以及 SQL SELECT TOP、LIMIT、FETCH FIRST 或 ROWNUM 子句的使用

SQL DELETE 语句 SQL DELETE 语句用于删除表中的现有记录。 DELETE 语法 DELETE FROM 表名 WHERE 条件;注意&#xff1a;在删除表中的记录时要小心&#xff01;请注意DELETE语句中的WHERE子句。WHERE子句指定应删除哪些记录。如果省略WHERE子句&#xff0c;将会删除表中的所…

为什么云游戏被认为是行业的未来趋势?

5G 时代的到来&#xff0c;游戏行业也正在经历着一场革命性的变革。云游戏&#xff0c;这个看似神秘的新兴领域&#xff0c;正在逐渐成为行业的未来趋势。 一、云游戏的优势 摆脱硬件束缚 在传统游戏中&#xff0c;玩家需要购买昂贵的游戏主机或电脑&#xff0c;才能享受高质…

SpringBoot——》配置logback日志文件

推荐链接&#xff1a; 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结——》【SpringBoot】 总结——》【MyBatis、MyBatis-Plus】 总结——》【Linux】 总结——》【MongoD…

详解Python Tornado框架写一个Web应用全过程

Tornado是什么 之前在看Jupyter组件的源码的时候&#xff0c;发现了tornado这个web框架。 不仅仅做一个web框架&#xff0c; 通过使用非阻塞网络I/O&#xff0c;Tornado可以扩展到数万个开放连接。 这样非常适合 long polling &#xff0c; WebSockets 以及其他需要与每个用户…

【PTA题目】L1-4 稳赢 分数 15

L1-4 稳赢 分数 15 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 大家应该都会玩“锤子剪刀布”的游戏&#xff1a;两人同时给出手势&#xff0c;胜负规则如图所示&#xff1a; 现要求你编写一个稳赢不输的程序&#xff0c;根据对方的出招&#xff0c;给出对应的赢招。但…

Spring Framework IoC依赖注入-按Bean类型注入

theme: smartblue Spring Framework 作为一个领先的企业级开发框架&#xff0c;以其强大的依赖注入&#xff08;Dependency Injection&#xff0c;DI&#xff09;机制而闻名。DI使得开发者可以更加灵活地管理对象之间的关系&#xff0c;而不必过多关注对象的创建和组装。在Spr…

⑩⑦【MySQL】锁:全局锁、表级锁、行级锁

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ MySQL锁 ⑩⑦【MySQL】锁&#xff1a;全局锁、…

Vue3 配置全局 scss 变量

variables.scss $color: #0c8ce9;vite.config.ts // 全局css变量css: {preprocessorOptions: {scss: {additionalData: import "/styles/variables.scss";,},},},.vue 文件使用

澳洲的猫罐头怎么样呢?几款我自己亲自喂养过的优质猫罐头推荐

一款优质的猫罐头&#xff0c;必须满足三个要点&#xff1a;完整又均衡的营养配方、新鲜又优质的原料、以及科学可靠的生产工艺。 猫罐头的三个要素&#xff0c;一个都不能少。配方不均衡&#xff0c;营养就不足&#xff1b;原料不新鲜&#xff0c;生产出来的猫罐头就不优质&a…