前端学习-事件对象与典型案例(二十六)

目录

前言

事件对象

目标

事件对象是什么

语法

获取事件对象

部分常用属性

示例代码

示例代码:评论回车发布

总结


前言

长风破浪会有时,直挂云帆济沧海。


事件对象

目标

能说出什么是事件对象

事件对象是什么

也是个对象,这个对象里有事件触发时的相关信息例如:鼠标点击事件中,事件对象就存了鼠标点在哪个位置等信息

使用场景可以判断用户按下哪个键,比如按下回车键可以发布新闻

可以判断鼠标点击了哪个元素,从而做相应的操作

语法

如何获取

在事件绑定的回调函数的第一个参数就是事件对象

一般命名为event,ev,e

元素.addEventListener('click',function(e){}//e为事件对象

获取事件对象

目标:能够使用常见事件对象属性

部分常用属性

type口 获取当前的事件类型>

clientX/clientY口 获取光标相对于浏览器可见窗口左上角的位置>

offsetX/offsetY获取光标相对于当前DOM元素左上角的位置 key口 用户按下的键盘键的值口 现在不提倡使用keyCode

示例代码

<!DOCTYPE html>
<html lang="en">
​
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
​
<body><button>按钮</button><script>const btn = document.querySelector('button');btn.addEventListener('click', function (e) {console.log(e.type);});</script>
</body>
​
</html>

示例代码:评论回车发布

<!DOCTYPE html>
<html lang="en">
​
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Input Box</title><style>body {font-family: Arial, sans-serif;}
​.input-container {display: flex;justify-content: space-between;align-items: flex-start;margin-bottom: 10px;width: 500px;}
​textarea {width: 70%;height: 100px;padding: 10px;border: 1px solid #ccc;border-radius: 5px;resize: none;position: relative;/* 设置相对定位,以便伪元素可以绝对定位 */box-sizing: border-box;/* 确保内边距和边框包含在宽度内 */}
​textarea::after {content: '庞嘉欣专属评论框';/* 伪元素内容 */position: absolute;/* 绝对定位 */bottom: 5px;/* 距离底部 5px */right: 5px;/* 距离右侧 5px */font-size: 0.8em;/* 字体大小 */color: #888;/* 字体颜色 */pointer-events: none;/* 确保伪元素不影响交互 */z-index: 1;/* 确保伪元素在内容之上 */}
​.button-counter-container {display: flex;flex-direction: column;align-items: flex-end;}
​button {padding: 20px 20px;background-color: #007bff;color: white;border: none;border-radius: 5px;cursor: pointer;margin-bottom: 10px;margin-right: 40px;margin-top: 10px;}
​.counter {text-align: right;margin-right: 50px;margin-top: 25px;}
​.counter span {font-weight: bold;}
​#comments-container {margin-top: 20px;width: 500px;}
​.comment {margin-bottom: 10px;padding: 10px;border: 1px solid rgba(0, 0, 0, 0.5);border-radius: 5px;background-color: #ffffff;}
​.comment-time {font-size: 0.9em;color: #888;margin-top: 5px;display: flex;justify-content: space-between;align-items: center;}
​.comment-time span {font-size: 0.8em;color: #888;}</style>
</head>
​
<body><div class="input-container"><textarea id="input-text" placeholder="发布一条友善的评论"></textarea><div class="button-counter-container"><button id="submit-button">发布</button><div class="counter"><span id="current-count">0</span>/200字</div></div></div>
​<div id="comments-container"></div>
​<script>document.addEventListener('DOMContentLoaded', function () {const inputText = document.getElementById('input-text');const currentCount = document.getElementById('current-count');const submitButton = document.getElementById('submit-button');const commentsContainer = document.getElementById('comments-container');
​inputText.addEventListener('input', function () {const count = inputText.value.length;currentCount.textContent = count;});
​function addComment() {const commentText = inputText.value.trim();if (commentText) {const now = new Date();const formattedTime = now.toLocaleString();
​const commentElement = document.createElement('div');commentElement.className = 'comment';
​const commentContent = document.createElement('span');commentContent.textContent = commentText;
​const commentTime = document.createElement('div');commentTime.className = 'comment-time';
​const timeSpan = document.createElement('span');timeSpan.textContent = formattedTime;
​const signatureSpan = document.createElement('span');signatureSpan.textContent = '^-^';signatureSpan.style.fontSize = '0.8em';signatureSpan.style.color = '#87CEEB';
​commentTime.appendChild(timeSpan);commentTime.appendChild(signatureSpan);
​commentElement.appendChild(commentContent);commentElement.appendChild(commentTime);
​commentsContainer.appendChild(commentElement);
​inputText.value = '';currentCount.textContent = '0';}}
​submitButton.addEventListener('click', addComment);
​inputText.addEventListener('keydown', function (event) {if (event.key === 'Enter' && !event.shiftKey) {event.preventDefault();addComment();}});});</script>
</body>
​
</html>


总结

千磨万击还坚劲,任尔东西南北风。

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

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

相关文章

Playwright vs Selenium:全面对比分析

在现代软件开发中&#xff0c;自动化测试工具在保证应用质量和加快开发周期方面发挥着至关重要的作用。Selenium 作为自动化测试领域的老牌工具&#xff0c;长期以来被广泛使用。而近年来&#xff0c;Playwright 作为新兴工具迅速崛起&#xff0c;吸引了众多开发者的关注。那么…

Windows 程序设计3:宽窄字节的区别及重要性

文章目录 前言一、宽窄字节简介二、操作系统及VS编译器对宽窄字节的编码支持1. 操作系统2. 编译器 三、宽窄字符串的优缺点四、宽窄字节数据类型总结 前言 Windows 程序设计3&#xff1a;宽窄字节的区别及重要性。 一、宽窄字节简介 在C中&#xff0c;常用的字符串指针就是ch…

进阶——十六届蓝桥杯嵌入式熟练度练习(LED的全开,全闭,点亮指定灯,交替闪烁,PWM控制LED呼吸灯)

点亮灯的函数 void led_show(unsigned char upled) { HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC,upled<<8,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RE…

力扣 最大子数组和

动态规划&#xff0c;前缀和&#xff0c;维护状态更新。 题目 从题可以看出&#xff0c;找的是最大和的连续子数组&#xff0c;即一个数组中的其中一个连续部分。从前往后遍历&#xff0c;每遍历到一个数可以尝试做叠加&#xff0c;注意是尝试&#xff0c;因为有可能会遇到一个…

Homestyler 和 Tripo AI 如何利用人工智能驱动的 3D 建模改变定制室内设计

让设计梦想照进现实 在Homestyler,我们致力于为每一个梦想设计师提供灵感的源泉,而非挫折。无论是初学者打造第一套公寓,或是专业设计师展示作品集,我们的直观工具都能让您轻松以惊人的3D形式呈现空间。 挑战:实现定制设计的新纪元 我们知道,将个人物品如传家宝椅子、…

算法练习4——一个六位数

这道题特别妙 大家仔细做一做 我这里采用的是动态规划来解这道题 结合题目要求找出数与数之间的规律 抽象出状态转移方程 题目描述 有一个六位数&#xff0c;其个位数字 7 &#xff0c;现将个位数字移至首位&#xff08;十万位&#xff09;&#xff0c;而其余各位数字顺序不…

client-go 的 QPS 和 Burst 限速

1. 什么是 QPS 和 Burst &#xff1f; 在 kubernetes client-go 中&#xff0c;QPS 和 Burst 是用于控制客户端与 Kubernetes API 交互速率的两个关键参数&#xff1a; QPS (Queries Per Second) 定义&#xff1a;表示每秒允许发送的请求数量&#xff0c;即限速器的平滑速率…

太原理工大学软件设计与体系结构 --javaEE

这个是简答题的内容 选择题的一些老师会给你们题库&#xff0c;一些注意的点我会做出文档在这个网址 项目目录预览 - TYUT复习资料:复习资料 - GitCode 希望大家可以给我一些打赏 什么是Spring的IOC和DI IOC 是一种设计思想&#xff0c;它将对象的创建和对象之间的依赖关系…

深度学习知识点:LSTM

文章目录 1.应用现状2.发展历史3.基本结构4.LSTM和RNN的差异 1.应用现状 长短期记忆神经网络&#xff08;LSTM&#xff09;是一种特殊的循环神经网络(RNN)。原始的RNN在训练中&#xff0c;随着训练时间的加长以及网络层数的增多&#xff0c;很容易出现梯度爆炸或者梯度消失的问…

mmdet

一&#xff0c;configs/_base_ 1.default_runtime.py 2.schedule_1x.py 二&#xff0c;mmdet 1.datasets/coco.py/CocoDataset METAINFO {classes:(milk, red, spring, fanta, sprite, pepsi, king, ice, cola, scream ),# palette is a list of color tuples, which is us…

ElasticSearch 认识和安装ES

文章目录 一、为什么学ElasticSearch?1.ElasticSearch 简介2.ElasticSearch 与传统数据库的对比3.ElasticSearch 应用场景4.ElasticSearch 技术特点5.ElasticSearch 市场表现6.ElasticSearch 的发展 二、认识和安装ES1.认识 Elasticsearch&#xff08;简称 ES&#xff09;2.El…

第34天:安全开发-JavaEE应用反射机制攻击链类对象成员变量方法构造方法

时间轴&#xff1a; Java反射相关类图解&#xff1a; 反射&#xff1a; 1、什么是 Java 反射 参考&#xff1a; https://xz.aliyun.com/t/9117 Java 提供了一套反射 API &#xff0c;该 API 由 Class 类与 java.lang.reflect 类库组成。 该类库包含了 Field 、 Me…

汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2)

汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2) 下面我们继续来介绍AutoSAR CP分层架构&#xff0c;下面的文字和图来自AutoSAR官网目前最新的标准R24-11的分层架构手册。该手册详细讲解了AutoSAR分层架构的设计&#xff0c;下面让我们来一起学习一下。 Introductio…

css面试常考布局(圣杯布局、双飞翼布局、三栏布局、两栏布局、三角形)

两栏布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> &…

网络攻击行为可视化分析系统【数据分析 + 可视化】

一、系统背景 随着信息技术的快速发展&#xff0c;网络已成为现代社会不可或缺的一部分。然而&#xff0c;与此同时&#xff0c;网络攻击手段也日益多样化和复杂化&#xff0c;给企业和个人的信息安全带来了极大的威胁。传统的网络攻击分析方法往往依赖于人工分析和处理大量的…

利用obs studio制作(人像+屏幕)录制影像

1.什么是obs? OBS&#xff08;Open Broadcaster Software&#xff09;是一款功能强大的开源软件&#xff0c;它使用户能够直接从电脑录制视频和直播内容到 Twitch&#xff0c;YouTube 和 Facebook Live 等平台。它在需要直播或录制屏幕活动的游戏玩家、YouTube 用户和专业人士…

C# GDI+的DrawString无法绘制Tab键的现象

【啰嗦2句】 现在用C#的人很少了吧&#xff1f;GDI更少了吧&#xff1f;所以这个问题估计也冷门。没关系&#xff0c;分享给特定需要的人也不错。 【问题现象】 工作中开发了一个报告编辑器&#xff0c;实现图文排版等功能&#xff0c;用着没什么问题&#xff0c;直到有一天…

夯实前端基础之HTML篇

知识点概览 HTML部分 1. DOM和BOM有什么区别&#xff1f; DOM&#xff08;Document Object Model&#xff09; 当网页被加载时&#xff0c;浏览器会创建页面的对象文档模型&#xff0c;HTML DOM 模型被结构化为对象树 用途&#xff1a; 主要用于网页内容的动态修改和交互&…

SD ComfyUI工作流 老照片修复上色

文章目录 老照片修复上色SD模型Node节点工作流程开发与应用效果展示老照片修复上色 该工作流专门设计用于老照片的修复和上色,通过一系列高级的图像处理技术,包括深度图预处理、面部修复、上色和图像放大等步骤,来恢复老照片的质量并增加色彩。首先,工作流加载老照片并进行…

后端技术选型 sa-token校验学习 下 结合项目学习 前后端登录

目录 后端设置 Controller 层 Service 层 后端返回 Token 给前端 1. 用户提交登录请求 2. 后端验证用户身份 3. 返回 Token 4. 前端保存 Token 前端存储 1. 前端向后端发起请求 2. 前端存储一下 Token 3.管理用户认证的 token 的 工具 4. 在 Service 层进行设置 H…