当前位置: 首页 > news >正文

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

  • 说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费如需要项目实战或者是体系化资源,文末名片加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.lryc.cn/news/238259.html

相关文章:

  • 解锁潜力:创建支持Actions接口调用的高级GPTs
  • 【发明专利】天洑软件再度收获六项国家发明专利授权
  • Netty源码学习4——服务端是处理新连接的netty的reactor模式
  • 8、信息打点——系统篇端口扫描CDN服务负载均衡WAF
  • Ant Design for Figma设计系统组件库 支持变量 非社区版
  • k8s的高可用集群搭建,详细过程实战版
  • 【20年扬大真题】编写对数组求逆的递归算法
  • 日志门面slf4j与常用的日志框架Log4j,Logback和Log4j2
  • 使用ssh在本地环境(Windows)连接虚拟机以及其中的docker容器
  • 没收到Win11 23H2正式版的推送怎么升级到23H2
  • SpringBoot整合Redis使用基于注解的缓存
  • STM32:时钟树原理概要
  • Python量化--诺贝尔奖获得者布莱克-斯科尔斯期权定价公式在日间交易中的应用
  • Redis 5 种基本数据类型详解
  • LeetCode8-字符串转换整数(atoi)
  • 算法分析与设计课后练习22
  • 芯片IO口不加电阻会怎样?
  • 智慧化工园区信息化整体解决方案:PPT全53页,附下载
  • 深度学习之三(卷积神经网络--Convolutional Neural Networks,CNNs)
  • 竞赛选题 目标检测-行人车辆检测流量计数
  • 【链表的说明、方法---顺序表与链表的区别】
  • 彻底解决electron-builder安装问题与npm下载配置问题
  • 变量命名的规则与规范
  • 【开源】基于Vue和SpringBoot的服装店库存管理系统
  • 怎样用css画一个圆?
  • Minikube Mac安装使用
  • 人工智能-循环神经网络通过时间反向传播
  • Delphi 取消与设置CDS本地排序
  • 智能门禁刷脸照片格式gif、bmp,png转换,转换base64
  • 听GPT 讲Rust源代码--src/librustdoc