一起来分析JavaScript五大事件

本篇文章给大家带来了关于javascript的相关知识,其中主要介绍了javascript中的一些常用事件,包括鼠标事件、键盘事件、页面事件、焦点事件等等,希望对大家有帮助。

一起来分析JavaScript五大事件

相关推荐:javascript教程

页面事件

思考:HTML页面是按照什么样的顺序进行加载的?

答案:页面的加载是按照代码的编写顺序,从上到下依次执行的。

立即学习“Java免费学习笔记(深入)”;

会出现的问题:若在页面还未加载完成的情况下,就使用JavaScript操作DOM元素,会出现语法错误。

在这里插入图片描述

解决办法:页面事件可以改变JavaScript代码的执行时机。

load事件:用于body内所有标签都加载完成后才触发,又因其无需考虑页面加载顺序的问题,常常在开发具体功能时添加。unload事件:用于页面关闭时触发,经常用于清除引用避免内存泄漏时使用。

在这里插入图片描述

焦点事件

在Web开发中,焦点事件多用于表单验证功能,是最常用的事件之一。

例如,文本框获取焦点改变文本框的样式,文本框失去焦点时验证文本框内输入的数据等。

在这里插入图片描述

为了让大家更好的掌握焦点事件的使用方法,下面以验证用户名和密码是否为空进行演示。

在这里插入图片描述

代码实现

验证用户名和密码是否为空body{background:#ddd;}.box{background:#fff;padding:20px 30px;width:400px;margin: 0 auto;text-align:center;}.btn{width:180px;height:40px;background:#3388ff;border:1px solid #fff;color:#fff;font-size:14px;}.ipt{width:260px;padding:4px 2px;}.tips{width:440px;height:30px;margin:5px auto;background:#fff;color:red;border:1px solid #ccc;display:none;line-height:30px;padding-left:20px;font-size:13px;}

window.onload = function() {addBlur($('user')); // 检测id为user的元素失去焦点后,value值是否为空addBlur($('pass')); // 检测id为pass的元素失去焦点后,value值是否为空};function $(obj) { // 根据id获取指定元素return document.getElementById(obj);}function addBlur(obj) { // 为指定元素添加失去焦点事件obj.onblur = function() {isEmpty(this);};}function isEmpty(obj) { // 检测表单是否为空if (obj.value === '') {$('tips').style.display = 'block';$('tips').innerHTML = '注意:输入内容不能为空! ';} else {$('tips').style.display = 'none';}}

鼠标事件

鼠标事件是Web开发中最常用的一类事件。

例如,鼠标滑过时,切换Tab栏显示的内容;利用鼠标拖拽曳状态框,调整它的显示位置等,这些常见的网页效果都会用到鼠标事件。

在这里插入图片描述

在项目开发中还经常涉及一些常用的鼠标属性,用来获取当前鼠标的位置信息。

在这里插入图片描述

在这里插入图片描述

IE6—8浏览器中不兼容pageX和pageY属性。因此,项目开发时需要对IE6~8浏览器进行兼容处理。

在这里插入图片描述

鼠标在文档中的坐标等于鼠标在当前窗口中的坐标加上滚动条卷去的文本长度。

为了让大家更好的理解鼠标事件的使用,以圆形显示鼠标单击位置为例演示。

在这里插入图片描述

代码实现

显示鼠标单击位置.mouse{position:absolute;background:#ffd965;width:40px;height:40px;border-radius:20px;}

var mouse = document.getElementById('mouse');//需求:鼠标在页面上单击时,获取单击时的位置,并显示一个小圆点document.onclick = function(event) {// 获取事件对象的兼容处理var event = event || window.event;// 鼠标在页面上的位置var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;// 计算

应该显示的位置var targetX = pageX - mouse.offsetWidth / 2;var targetY = pageY - mouse.offsetHeight / 2;// 在鼠标单击的位置显示

mouse.style.display = 'block';mouse.style.left = targetX + 'px';mouse.style.top = targetY + 'px';};

【案例】鼠标拖曳特效

在这里插入图片描述

盒子的位置(left和top值)= 鼠标的位置(left和top值)- 鼠标按下时与盒子之间的距离(left和top值)。

举个例子

在这里插入图片描述

代码实现思路

① 编写HTML,设计弹框用于实现拖拽特效。

② 为拖拽条添加mousedown事件及其处理程序。

来福FM 来福FM

来福 – 你的私人AI电台

来福FM 243 查看详情 来福FM

③ 处理鼠标移动事件,实现鼠标的拖拽的特效。

④ 处理释放鼠标按键的事件,实现鼠标按钮松开后,弹框不再移动。

代码实现

鼠标拖动body{margin:0}.box{width:400px;height:300px;border:5px solid #eee;box-shadow:2px 2px 2px 2px #666;position:absolute;top:30%;left:30%}.hd{width:100%;height:25px;background-color:#7c9299;border-bottom:1px solid #369;line-height:25px;color:#fff;cursor:move}#box_close{float:right;cursor:pointer}

注册信息 (可以拖拽)【关闭】

// 获取被拖动的盒子和拖动条var box = document.getElementById('box');var drop = document.getElementById('drop');drop.onmousedown = function(event) { // 鼠标在拖动条上 按下 可拖动盒子var event = event || window.event;// 获取鼠标按下时的位置var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;// 计算鼠标按下的位置 距 盒子的位置var spaceX = pageX - box.offsetLeft;var spaceY = pageY - box.offsetTop;document.onmousemove = function(event) { // 鼠标移动的时候 获取鼠标的位置 整个盒子跟着鼠标的位置走var event = event || window.event;// 获取移动后鼠标的位置var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;// 计算并设置盒子移动后的位置box.style.left = pageX - spaceX + 'px';box.style.top = pageY - spaceY + 'px';};};document.onmouseup = function() {// 释放鼠标按键时 取消盒子的移动document.onmousemove = null;};

键盘事件

键盘事件是指用户在使用键盘时触发的事件。

例如,用户按Esc键关闭打开的状态栏,按Enter键直接完成光标的上下切换等。

在这里插入图片描述

下面以Enter键切换的使用进行演示。具体如例所示。

在这里插入图片描述

代码实现

按Enter键切换

用户姓名:

电子邮箱:

手机号码:

个人描述:

var inputs = document.getElementsByTagName('input');for (var i = 0; i < inputs.length; ++i) {inputs[i].onkeydown = function(e) {// 获取事件对象的兼容处理var e = event || window.event;// 判断按下的是不是回车,如果是,让下一个input获取焦点if (e.keyCode === 13) {// 遍历所有input框,找到当前input的下标for (var i = 0; i = inputs.length ? 0 : i + 1;break;}}// 如果下一个input还是文本框,则获取键盘焦点if (inputs[index].type === 'text') {inputs[index].focus(); // 触发focus事件}}};}

注意

keypress事件保存的按键值是ASCII码,

keydown和keyup事件保存的按键值是虚拟键码。

具体参考MDN等手册

表单事件

表单事件指的是对Web表单操作时发生的事件。

例如,表单提交前对表单的验证,表单重置时的确认操作等。JavaScript提供了相关的表单事件。

在这里插入图片描述

下面以是否提交和重置表单数据为例进行演示。具体如例所示。

在这里插入图片描述

代码实现

表单事件// 获取表单和需要验证的元素对象var regist = document.getElementById('register');var user = document.getElementById('user');regist.onsubmit = function(event) { // 为表单添加submit事件// 获取事件对象、输出当前事件类型var event = event || window.event;console.log(event.type);// 判断表单元素内容是否为空,若为空,则返回false,否则返回truereturn user.value ? true : false;};regist.onreset = function (event) { // 为表单添加reset事件// 获取事件对象、输出当前事件类型var event = event || window.event;console.log(event.type);// 判断是否确认重置,按“确定”则返回true,按“取消”返回falsereturn confirm('请确认是否要重置信息,重置后表单填写的内容将全部清空');};

动手实践

图片放大特效

分析如何实现图片放大特效:

准备两张相同的图片,小图和大图。

小图显示在商品的展示区域。

大图用于鼠标在小图上移动时,按比例的显示大图中的对应区域。

代码实现思路

① 编写HTML页面,展示小图、隐藏鼠标的遮罩及大图。

② 当鼠标在小图上移动时,显示鼠标的遮罩和大图。

③ 当鼠标移动时,让遮罩跟着在小图中进行移动。

④ 限定遮罩在小图中的可移动范围。

⑤ 根据遮罩在小图中的覆盖范围,按比例的显示大图。

相关推荐:javascript教程

以上就是一起来分析JavaScript五大事件的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/552257.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
华为Nova系列摄像头怎么调整以优化夜间自拍?夜间自拍的设置教程
上一篇 2025年11月9日 20:40:19
三星首款三折叠手机被曝叫Galaxy G Fold:9.96英寸屏幕,2025Q3发布
下一篇 2025年11月9日 20:40:23

相关推荐

  • 动态表单输入中多答案数据处理教程

    本教程旨在解决Web开发中,如何高效处理包含动态数量答案的表单提交数据,特别是当需要更新现有问题及其关联答案时。文章将详细阐述前端表单的命名策略以及后端PHP如何解析这些动态输入,以准确获取答案内容及其对应的数据库ID,从而实现数据的精准更新,并提供最佳实践建议。 理解动态答案更新的挑战 在构建问答…

    2026年9月24日
    000
  • 使用 PHP 解析 JSON 文件并在网页上显示特定数据

    本文旨在帮助开发者学习如何使用 PHP 解析 JSON 文件,并提取其中的特定数据,将其以结构化的方式展示在网页上。我们将通过一个简单的示例,演示如何读取 JSON 数据,解析成 PHP 数组,并最终以 HTML 表格的形式呈现。 PHP 解析 JSON 数据 JSON (JavaScript Ob…

    2026年9月24日
    100
  • PHP Web开发:高效处理动态数量问题答案的表单更新与ID获取

    本教程探讨在PHP Web开发中,如何高效处理具有动态数量答案的问题更新表单。针对需要同时获取答案文本值及其对应ID的场景,文章详细介绍了通过合理设计表单字段命名和利用$_POST超全局变量的键值迭代特性,实现对动态生成答案字段的准确解析和数据提取,确保更新操作的完整性。 问题背景与挑战 在开发问答…

    2026年9月24日
    100
  • JavaScript 中替换 JSON 数据值的实用指南

    本文旨在提供一个清晰、简洁的 JavaScript 教程,讲解如何根据特定条件,利用响应数据中的值替换 JSON 数据中的指定字段。我们将通过实例代码演示如何处理包含 “All” 值的 Emp_Id 字段,并使用响应数据中的 ID 值进行替换,最终生成期望的 JSON 数据结…

    2026年9月24日
    200
  • Laravel Blade中条件隐藏元素的优雅实践

    本文探讨了在Laravel Blade模板中如何高效地实现HTML元素的条件隐藏。针对传统@if-@else语句导致代码冗余的问题,教程提出使用Blade的内联三元运算符在style属性中动态控制display: none,从而避免重复代码,提升模板的可读性和维护性。此外,还将介绍如何利用CSS类和…

    2026年9月24日
    100
  • VSCode主题开发:创建动态色彩主题的进阶技术解析

    动态主题需通过外部插件监听系统事件实现,核心是利用vscode.themeColor API响应主题切换,结合语义化作用域与Semantic Highlighting精准控制配色逻辑,实现智能自适应视觉体验。 想让VSCode主题随环境自动切换色彩?动态主题不只是换个配色那么简单。核心在于理解VSC…

    2026年9月23日
    400
  • PHP同页面无限次表单提交与显示:防止数据覆盖的实现技巧

    本教程详细阐述了如何在php中实现同页面多次表单提交而不覆盖先前数据的方法。核心策略是利用html的数组命名输入(`name=”field[]”`)来收集多个值,并在每次页面刷新时,通过隐藏输入字段重新提交已有的数据,从而在不依赖数据库的情况下,实现“无限”次提交并显示所有历…

    2026年9月23日
    100
  • VS Code自动化测试:持续集成与测试覆盖率

    VS Code通过插件和工具集成支持自动化测试、CI流程与覆盖率分析。①配置Jest或pytest等框架,结合Test Explorer UI插件实现测试运行与调试;②利用GitHub Actions等CI服务,在代码推送后自动执行测试,通过插件在编辑器内查看状态;③启用Coverage Gutte…

    2026年9月23日
    100
  • 悟空浏览器如何使用全局媒体控制器_悟空浏览器多媒体播放控制中心使用技巧

    1、确保悟空浏览器通知权限开启,以激活系统媒体控制;2、检查网站是否配置Media Session API,必要时注入脚本补充元数据与控制函数;3、结合画中画与后台播放功能,维持媒体会话活跃,实现锁屏或切换应用时的持续控制。 如果您在使用悟空浏览器播放网页媒体时,希望利用系统级的媒体控制功能来管理播…

    2026年9月23日
    100
  • 使用正则表达式实现字符串大小写不敏感替换

    本文将介绍如何利用正则表达式,高效、简洁地实现字符串中特定单词的大小写不敏感替换,从而将所有形式的单词统一转换为指定大小写。通过运用正则表达式的“不区分大小写”模式,可以避免为每种大小写变体编写单独的替换条件,极大提升代码的简洁性和可维护性。 在编程实践中,我们经常会遇到需要将字符串中某个单词的所有…

    2026年9月23日
    600
  • PHP如何设置视频自动播放_PHP设置视频自动播放方法

    答案:PHP通过生成含autoplay和muted属性的HTML5 video标签实现视频自动播放。具体描述:PHP动态输出视频路径与播放设置,结合autoplay、muted、controls等属性,在浏览器限制下提升自动播放成功率,尤其用于背景视频循环播放场景。 PHP 本身是服务器端语言,不能…

    2026年9月23日
    2200
  • 在PHP中将JSON数组值声明为变量

    本文介绍了如何在PHP中从数据库获取数据并将其编码为JSON数组,然后通过AJAX调用将其传递到另一个页面。重点讲解了如何在接收数据的页面中解析JSON数据,并将JSON数组中的特定值提取为PHP变量,以便在后续的函数或查询中使用。 从数据库获取数据并编码为JSON 首先,我们需要从数据库中获取数据…

    2026年9月23日
    1200
  • PHP:根据条件动态禁用表格中的按钮

    本文旨在解决在PHP中,根据表格行中两列的值是否相等,动态禁用对应按钮的问题。通过修改循环遍历数据并生成HTML表格的代码,在生成按钮时增加条件判断,实现当mi_name列和item_name列的值相等时,禁用该行的按钮。文章提供两种实现方式,并附带代码示例,帮助开发者快速实现此功能。 在PHP中动…

    2026年9月23日
    200
  • 在无Maven或Eclipse环境下手动构建Java Web应用WAR包的教程

    本教程详细介绍了如何在不依赖Maven或Eclipse等集成开发环境的情况下,为Java Web应用程序手动生成WAR(Web Application Archive)文件。文章首先阐述了WAR文件的基本结构,随后通过一个Ant构建脚本的实例,指导读者完成从源代码编译、文件组织到最终WAR包生成的全…

    2026年9月23日
    200
  • 微软免费文件恢复工具介绍

    微软免费文件恢复工具介绍微软免费文件恢复工具介绍微软免费文件恢复工具介绍微软免费文件恢复工具介绍

    现在好了,最近微软在 windows 10 应用商店中上架了一款免费的数据删除恢复工具 windows file recovery,猿妹再也不用担心误删文件了。 Windows File Recovery基于命令行程序设计,大小仅有8.26MB,所有Windows 10用户均可免费下载使用。 无论是…

    2026年9月23日 用户投稿
    200
  • Prestashop分类描述在分页时的显示行为解析与SEO考量

    Prestashop商店中,分类描述通常仅在首个分页页面显示,而在后续分页页面上消失,甚至从第二页返回第一页时也可能不显示。这并非一个技术故障,而是Prestashop的默认行为,且从SEO角度看,只要描述在直接访问的第一页可见,就已满足核心要求,无需在所有分页页面重复显示,以避免潜在的重复内容问题…

    2026年9月23日
    100
  • 处理动态数量问答数据的更新教程

    本教程旨在详细阐述如何有效地管理和更新包含动态数量答案的问题数据。我们将探讨在Web表单中如何设计输入字段以捕获答案内容及其唯一标识符,并通过服务器端(以PHP为例)解析提交的数据,从而实现对现有答案的精确更新和新答案的添加,确保数据一致性和系统健壮性。 场景概述:处理动态数量的问答数据更新 在许多…

    2026年9月23日
    100
  • Prestashop分类页描述与分页:SEO考量及前端行为解析

    本文深入探讨Prestashop电商平台中分类页面描述在分页操作时消失的常见现象。我们将解析其背后的技术原理,重点从搜索引擎优化(SEO)角度阐述为何此行为并非核心问题,并强调确保分类描述在首页面加载时的完整性至关重要。同时,文章也提供若需自定义此行为的思路。 Prestashop分类页描述的分页行…

    2026年9月23日
    200
  • 使用PHP和Ajax实现搜索结果的A-Z排序

    在PHP搜索结果页面实现A-Z排序功能,可以极大地提升用户体验。结合Ajax技术和PHP后端排序逻辑,我们可以在不刷新页面的情况下实现排序功能。以下将详细介绍实现步骤。 1. 前端:创建排序表单和Ajax请求 首先,需要在 search.php 页面中创建一个表单,用于触发排序操作。这个表单可以包含…

    2026年9月23日
    100
  • HTML中无法链接本地脚本源的问题解析与解决方案

    本文旨在解决在本地HTML文件中无法正确链接JavaScript脚本的问题,尤其是在使用p5.js等库时。我们将探讨常见原因,并提供无需Web服务器即可成功运行HTML、JavaScript和CSS代码的有效方法。通过修改HTML结构,确保脚本正确加载和执行,从而避免页面无法渲染的情况。 在本地开发…

    2026年9月23日
    1100

发表回复

登录后才能评论
关注微信