Javaweb - 5 事件的绑定

目录

什么是事件

常见事件

鼠标事件

键盘事件

表单事件

事件的绑定方式

通过元素的属性绑定

通过 DOM 编程动态绑定

总结:


什么是事件

HTML 事件可以是浏览器行为,也可以是用户和行为。当一些行为发生时,可以自动触发对应的 JS 函数的运行。JS 的事件驱动指的就是,行为触发代码运行,这一特点。

常见事件

 详见:HTML DOM 事件对象 | 菜鸟教程

鼠标事件

键盘事件

表单事件

事件的绑定方式

通过元素的属性绑定

测试鼠标事件

测试键盘事件

测试表单事件:

这里需要注意的是:

当点击输入框之后,即是获得焦点了,再当鼠标点击输入框以外的位置,即是失去焦点了。

当向输入框中输入内容后,控制台并不会打印“内容改变了”,而是当输入完内容之后,鼠标再点击输入框以外的位置,此时才真的是内容发生改变了,才会打印“内容改变了”。

我们还可以拿到用户在输入框 / 选择框改变的值:

补充:在 select 标签的 option 标签中,value 值默认就是双标签中间的文本,但我们也可以在 option 标签中手动指定 value ==》 <option value = "1">北京</option>

还有是在表单提交的按钮上关联事件:

我们关联的事件 testSubmit 函数中,使用的是 alert,这样在这里,我们可以有机会来阻止表单的提交 ==》event.preventDefault(); 这行代码,就可以阻止组件的默认行为(组件的默认行为,就类似于,点击 submit 的按钮,就会提交,点击 reset 的按钮,就会重置~)

增加了阻止组建默认行为的代码后,仍然会跳出弹框,但是当我们点击确定的时候,却无法跳转到表单中的 action 地址~

还有阻止表单提交的方法如下:

弹窗有三种方式:

        1. alert() 信息提示框

        2. prompt() 信息输入框

        3. confirm() 信息确认框

上面的这种阻止方法,就利用了信息确认框,confirm() 会给我们返回一个 boolean 类型的变量,当我们点击取消的时候,flag 为 false,就会阻止表单提交~

还有一种方法是:直接利用返回值~

补充注意:

        1. 通过事件元素属性绑定函数,在行为发生的时候会自动执行函数

        2. 一个事件可以同时绑定多个函数

        3. 一个元素可以同时绑定多个事件

        4. 方法中可以传入 this 对象,代表当前元素

通过 DOM 编程动态绑定

这里先是大概介绍一下 DOM 编程~

通过 document.getElementById 获得了一个对象,这个对象就是一个按钮

但,细心的观众已经发现,上面的 script 代码,我们是放在了 body 里面,我们前面不是说过吗,script 的代码,放在任何地方都可以,但是我们一般不是都放在 head 标签中吗?

==》

我们尝试一下,如果把 DOM 编程的代码,放在 head 中

 

测试发现,我勒个豆,为什么这次点击那个按钮,就没有反应了呢??? 

==》

代码的顺序会影响浏览器对代码的解析~

浏览器从上往下解析,如果 DOM 编程中的代码,放在 body 中的 button 后面,就可以正常通过 documentr.getElementById 来返回获取到这个按钮。

但是,当 DOM 编程中的代码,被放在 head 中,浏览器解析的时候,从上往下扫描,是先扫到了 document.getElementById,通过 id 找到 btn1,但此时浏览器还没有扫到下面的 button 代码,所以,这行代码就无法根据 document.getElementById 来获得按钮,所以获取的对象就是 null,是无法在 null 上设置事件的~ 所以当我们 F12 打开控制台的时候,会出现下面的报错信息~

如何解决呢???

==》

可以先让浏览器扫描完完整的所有代码,然后再执行 script 里面的代码就可以啦~

这时候就继前三种,鼠标事件,键盘事件,表单事件之后,有了第四种事件,页面加载事件~

onload ==》 页面加载完毕事件~

onload 事件是多会发生的呢?? 

==》

当浏览器将所有的代码都扫描完成之后,才会执行 onload 绑定的事件

如上面的代码, 就可以实现我们想要的功能啦~

即因为 body 中有了 onload 事件,就会扫描完整个浏览器的代码,再执行 onload 中的代码,将其封装为一个函数 ready()

我们也可以对上面的方法进行简写:

直接在 head 位置的 script 中,用 window.onload 即可~

 我们也可以用上面的方法对 div 进行事件绑定:

通过上面的代码,就可以让本来是 green 的 div 框,通过单击,然后转换成 red ~

总结:

DOM 编程在本文仅仅只是浅尝即止是使用,后面我们会详细介绍~

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

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

相关文章

怎么让二级域名绑定到wordpesss指定的页面

要将二级域名(如 beijing.wodepress.com)绑定到 WordPress 指定页面(如 wodepress.com/beijing)&#xff0c;可以通过以下步骤实现&#xff1a; 1. 设置泛域名解析 在域名注册商的管理后台&#xff0c;添加一条泛域名解析记录&#xff1a; 主机记录&#xff1a;输入 *(星号)…

Ragflow源码:launch_backend_service.sh

流程图 #mermaid-svg-hRqGAXWC651HHOLZ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hRqGAXWC651HHOLZ .error-icon{fill:#552222;}#mermaid-svg-hRqGAXWC651HHOLZ .error-text{fill:#552222;stroke:#552222;}#me…

前端的跨域问题

前端新手也能看懂的跨域问题详解 在前端开发中&#xff0c;我们经常会听到“跨域问题”。尤其是在本地调试前端和后台接口时&#xff0c;浏览器突然抛出一堆报错信息&#xff0c;比如&#xff1a; Access to XMLHttpRequest at [http://api.xxx.com/data](http://api.xxx.com…

TCP 连接在异常情况下的断开机制

文章目录 一、进程(客户端)被 kill 掉1、kill [-15]2、kill -9 二、进程(客户端) core 掉 一、进程(客户端)被 kill 掉 详细验证流程 1、kill [-15] 2、kill -9 二、进程(客户端) core 掉

【甲方安全建设】持续渗透测试(一)

持续渗透测试是一种现代安全方法&#xff0c;它对针对组织数字资产的网络攻击进行实时或近实时模拟&#xff0c;确保在漏洞出现时识别并解决漏洞… 文章目录 行业洞察持续渗透测试不是什么&#xff1f;1. 非单一自动化漏洞扫描2. 非传统人工渗透测试的替代品3. 非万能解决方案4…

LOCAL PATTERNS GENERALIZE BETTER FOR NOVEL ANOMALIES

标题&#xff1a;局部模式在新颖异常上的泛化能力更强 原文链接&#xff1a;https://openreview.net/forum?id4ua4wyAQLm 源码链接&#xff1a;https://github.com/AllenYLJiang/Local-Patterns-Generalize-Better/ 发表&#xff1a;ICLR-2025 摘要 视频异常检测&#xff08;…

ABP vNext + Azure Application Insights:APM 监控与性能诊断最佳实践

ABP vNext Azure Application Insights&#xff1a;APM 监控与性能诊断最佳实践 &#x1f680; &#x1f4da; 目录 ABP vNext Azure Application Insights&#xff1a;APM 监控与性能诊断最佳实践 &#x1f680;1️⃣ 集成目标与环境要求 2️⃣ 安装 SDK 与注入服务 3️⃣ 日…

OPENGLPG第九版学习 - 纹理与帧缓存 part1

文章目录 6.1 纹理综述6.2 基木纹理类型6.3 创建并初始化纹理代理纹理 6.4 指定纹理数据6.4.1 显式设置纹理数据将静态数据载入到纹理对象 6.4.2 从缓存(目标对象GL_PIXEL_UNPACK_BUFFER)中加载纹理6.4.3 从文件加载图像(DDS为例)读取一个图像文件并返回内存中的纹素数据将纹素…

谁来定义未来座舱?新一代车载显示「C位」之战开启

在汽车智能网联化转型过程中&#xff0c;车载显示屏幕作为人车交互的重要载体&#xff0c;已经站上了迅猛发展的新起点。 一方面&#xff0c;伴随着汽车智能化的加速渗透与发展&#xff0c;传统中控屏与仪表显示屏的单一显示模式已经难以匹配智能化交互需求&#xff0c;车载显…

基于JavaScript的MQTT实时通信应用开发指南

MQTT 协议入门与实践&#xff1a;使用 JavaScript 构建实时通信应用 1. 什么是 MQTT&#xff1f; MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的 发布/订阅&#xff08;Pub-Sub&#xff09; 消息协议&#xff0c;专为低带宽、高延迟或不稳…

React 19中如何向Vue那样自定义状态和方法暴露给父组件。

文章目录 前言一、什么是 useImperativeHandle&#xff1f;1.1 为什么需要 useImperativeHandle&#xff1f;1.2 基本语法 二、useImperativeHandle 的常见用法3.1 暴露自定义方法3.2子组件封装的弹窗关闭方法暴露给外部 注意点&#xff1a;总结 前言 在 React 的函数组件中&a…

Windows定时关机工具

自己设计了一款简单易用的windows定时关机工具&#xff0c;使用简单&#xff0c;使用只需两步&#xff1a; 1、输入设定的时间 2、点击开始计时 Ps: 1、文章顶部直接下载exe文件 2、文件设置不了免费下载&#xff0c;只能用云盘&#xff1a;定时关机工具.exe - 蓝奏云。 w…

枫清科技受邀参加2025数据智能大会

近日&#xff0c;由中国通信标准化协会主办&#xff0c;中国信通院、大数据技术标准推进委员会(CCSA TC601)承办的“2025数据智能大会”在北京隆重召开&#xff0c;本届大会以“Data X AI&#xff0c;数据燃动智能”为主题&#xff0c;聚焦央国企数智化转型、下一代数据治理、数…

黑马头条-数据管理平台

目录 项目介绍 功能 项目准备 技术 验证码 验证码登录 验证码登录-流程 关于token token的介绍 token的使用 个人信息设置 个人信息设置和axios请求拦截器 axios响应拦截器和身份验证失败 优化-axios响应结果 发布文章 发布文章-富文本编辑器 发布文章-频道列…

Pytorch3D 中涉及的知识点汇总

PyTorch3D 是 Facebook&#xff08;现 Meta&#xff09;AI 研究院&#xff08;FAIR&#xff09;推出的一个基于 PyTorch 的三维计算库&#xff0c;主要用于 3D 计算机视觉与图形学任务&#xff0c;如 3D 重建、渲染、点云处理、网格操作等。 下面是对 PyTorch3D 中重要涉及知识…

XML在线格式化工具

XML格式化 免费在线XML格式化与压缩工具&#xff0c;一键美化、校验、压缩和优化您的XML代码。支持自定义缩进、节点折叠&#xff0c;提升可读性&#xff0c;减小文件体积&#xff0c;加速数据传输。 https://toolshu.com/xml 本工具是一款专为处理XML&#xff08;可扩展标记…

【软件系统架构】系列四:嵌入式技术

目录 一、嵌入式系统组成 (1)嵌入式处理器 (2)支撑硬件 (3)嵌入式操作系统 (4)支撑软件 (5)应用软件 二、嵌入式系统特性 三、嵌入式系统分类与分层结构 1.分类 2.嵌入式软件的五层架构深入解析 (1)硬件层(Hardware Layer) (2)抽象层(Hardware Ab…

监管报送面试回答思路和示例

在银行监管报送岗位的面试中&#xff0c;回答问题时需要展现出你的专业知识、实际操作经验、问题解决能力以及对监管合规的重视。以下是对各类问题的回答思路和示例&#xff1a; 一、专业知识类问题 1. 请简述银行监管报送的主要类型和报送频率 回答思路&#xff1a;分类介绍…

音视频SDK架构演进的实践与思考

“不是每一行代码都值得骄傲&#xff0c;但每一次迭代&#xff0c;都是一次更接近极致的尝试。” 从最初的数千行代码、到如今跨平台、全功能、稳定可靠的直播技术基座&#xff0c;大牛直播SDK走过了整整十年。十年&#xff0c;既是时间的刻度&#xff0c;更是技术沉淀与产品信…

vue.config.js配置学习

1.部署应用包时的基本 URL (baseUrl或publicPath) baseUrl在vue-cli 3.3 时弃用了&#xff0c;自此之后使用publicPath 默认&#xff1a;/ module.exports {// baseUrl:"/",publicPath: ./, ) 2.打包时输出的文件位置&#xff1a;outputDir 默认: dist module.…