JS渲染锻炼输入表单
前言
上篇文章为大家展现了好看的信息窗口,接下来我们跟着流程图看下一步

之前我们的带点击事件已经添加完毕,下一步就是当用户点击的时候,渲染锻炼形式,当然这是一个标签,可以提供给用户输入锻炼形式
实例
● 我们的表单在HTML中已经写好了,其实这个表单有一个隐藏类

● 当我们去除这个隐藏类的时候,我们就可以让表单展现出来,当然这个表单的类名已经在js存储到变量中,我们可以直接去使用
map.on('click', function (mapEvent) {form.classList.remove('hidden');map.on('click', function (mapEvent) {form.classList.remove('hidden');// const { lat, lng } = mapEvent.latlng;// L.marker([lat, lng])// .addTo(map)// .bindPopup(// L.popup({// maxWidth: 250,// minWidth: 100,// autoClose: false,// closeOnClick: false,// className: 'running-popup',// })// )// .setPopupContent('跑步')// .openPopup();});},});},

● 让我们刚开始点击的时候,光标就锁定在锻炼距离上,这样会提升用户体验
inputDistance.focus();

● 当表单生成并且填写完毕后,我们回车就会将标记渲染到地图上,很明显,这就要使用监听事件了
form.addEventListener('submit', function () {//展现标记const { lat, lng } = mapEvent.latlng;L.marker([lat, lng]).addTo(map).bindPopup(L.popup({maxWidth: 250,minWidth: 100,autoClose: false,closeOnClick: false,className: 'running-popup',})).setPopupContent('跑步').openPopup();
});
但是,我们发现这里的map,和mapEvent好像无法访问到,因为这个是在另一个函数内部的,所以我们需要在全局上进行宣告;宣告完成后,不要忘记修改函数中的变量声明;
let map, mapEvent;
if (navigator.geolocation)navigator.geolocation.getCurrentPosition(function (position) {const { latitude } = position.coords;const { longitude } = position.coords;const coords = [latitude, longitude];map = L.map('map').setView(coords, 13); //去除const声明L.tileLayer('https://{s}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png', {attribution:'© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',}).addTo(map);map.on('click', function (mapE) { //这个的Event需要修改mapEvent = mapE; //将这里的变量赋予到全局去form.classList.remove('hidden');inputDistance.focus();});},function () {alert('无法获取你的位置!');});
● 但是这样并不会生效哦,不要忘记,表单的默认行为提交后会刷新网页;所以我们要阻止表单的默认行为;
form.addEventListener('submit', function (e) {e.preventDefault(); //组织表单默认行为//展现标记const { lat, lng } = mapEvent.latlng;L.marker([lat, lng]).addTo(map).bindPopup(L.popup({maxWidth: 250,minWidth: 100,autoClose: false,closeOnClick: false,className: 'running-popup',})).setPopupContent('跑步').openPopup();
});

● 这个标签在输入提交之后并不会清楚里面的内容,所以我们使用我们之前经常使用方式,当表格提交后,清理输入选项;
form.addEventListener('submit', function (e) {e.preventDefault(); //组织表单默认行为//将表格输入内容置空inputDistance.value =inputDuration.value =inputCadence.value =inputElevation.value ='';//展现标记const { lat, lng } = mapEvent.latlng;L.marker([lat, lng]).addTo(map).bindPopup(L.popup({maxWidth: 250,minWidth: 100,autoClose: false,closeOnClick: false,className: 'running-popup',})).setPopupContent('跑步').openPopup();
});
● 下面,当表单输入为骑行的时候将锻炼配置改变为骑行海拔。
● 这样在HTML里面也写好了,同样,这个也是隐藏类

● 其实这个实现非常的简单,我们只需要在监听事件监听到选择改变的时候,改变一下隐藏类就行了,实际我们只需要确保这两个必须保持有一个有隐藏类
inputType.addEventListener('change', function () {//改变的时候判断是否存在隐藏类,有就去除,没有就添加inputElevation.closest('.form__row').classList.toggle('form__row--hidden'); inputCadence.closest('.form__row').classList.toggle('form__row--hidden');
});

这还没有写多少的功能,我们似乎发现我们的代码已经非常的乱了,下篇文章我们需要提前考虑一下我们的项目架构,以便我们可以更换的规划我们的代码,使得代码的管理更加的好;
相关文章:
JS渲染锻炼输入表单
前言 上篇文章为大家展现了好看的信息窗口,接下来我们跟着流程图看下一步 之前我们的带点击事件已经添加完毕,下一步就是当用户点击的时候,渲染锻炼形式,当然这是一个标签,可以提供给用户输入锻炼形式 实例 ● 我…...
proteus仿真学习(1)
一,创建工程 一般选择默认模式,不配置pcb文件 可以选用芯片型号也可以不选 不选则从零开始布局,没有初始最小系统。选用则有初始最小系统以及基础的main函数 本次学习使用从零开始,不配置固件 二,上手软件 1.在元件…...
决策树+随机森林模型实现足球大小球让球预测软件
文章目录 前言一、决策树是什么?二、数据收集与整理1.数据收集2.数据清洗3.特征选择 三、决策树构建3.1绘制训练数据图像3.2 训练决策树模型3.3 依据模型绘制决策树的决策边界3.4 树模型可视化 四、模型预测五、随机森林模型总结 前言 之前搞足球数据分析的时候&…...
31省市农业地图大数据
1.北京市 谷类作物种植结构(万亩) 农作物种植结构(万亩) 2.天津市 谷类作物种植结构(万亩) 农作物种植结构(万亩) 3.黑龙江省 谷类作物种植结构(万亩) 农作物…...
http请求包含什么
HTTP请求通常包含以下几个主要部分: 请求行(Request Line): 包含请求方法(如 GET、POST、PUT、DELETE 等)、请求的目标 URI 和 HTTP 版本。例如:GET /index.html HTTP/1.1 请求头部(…...
【基础算法总结】模拟篇
目录 一,算法介绍二,算法原理和代码实现1576.替换所有的问号495.提莫攻击6.Z字形变换38.外观数列1419.数青蛙 三,算法总结 一,算法介绍 模拟算法本质就是"依葫芦画瓢",就是在题目中已经告诉了我们该如何操作…...
《深度学习》PyTorch 手写数字识别 案例解析及实现 <下>
目录 一、回顾神经网络框架 1、单层神经网络 2、多层神经网络 二、手写数字识别 1、续接上节课代码,如下所示 2、建立神经网络模型 输出结果: 3、设置训练集 4、设置测试集 5、创建损失函数、优化器 参数解析: 1)para…...
【笔记】材料分析测试:晶体学
晶体与晶体结构Crystal and Crystal Structure 1.晶体主要特征 固态物质可以分为晶态和非晶态两大类,分别称为晶体和非晶体。 晶体和非晶体在微观结构上的区别在于是否具有长程有序。 晶体(长程有序)非晶(短程有序)…...
飞塔Fortigate7.4.4的DNS劫持功能
基础网络配置、上网策略、与Server的VIP配置(略)。 在FortiGate上配置DNS Translation,将DNS请求结果为202.103.12.2的DNS响应报文中的IP地址修改为Server的内网IP 10.10.2.100。 config firewall dnstranslationedit 1set src 2.13.12.2set…...
Unity 设计模式 之 行为型模式 -【状态模式】【观察者模式】【备忘录模式】
Unity 设计模式 之 行为型模式 -【状态模式】【观察者模式】【备忘录模式】 目录 Unity 设计模式 之 行为型模式 -【状态模式】【观察者模式】【备忘录模式】 一、简单介绍 二、状态模式(State Pattern) 1、什么时候使用状态模式 2、使用状态模式的…...
【RabbitMQ】RabbitMQ 的概念以及使用RabbitMQ编写生产者消费者代码
目录 1. RabbitMQ 核心概念 1.1生产者和消费者 1.2 Connection和Channel 1.3 Virtual host 1.4 Queue 1.5 Exchange 1.6 RabbitMO工作流程 2. AMQP 3.RabbitMO快速入门 3.1.引入依赖 3.2.编写生产者代码 3.3.编写消费者代码 4.源码 1. RabbitMQ 核心概念 在安装…...
openmv与stm32通信
控制小车视觉循迹使用 OpenMV 往往是不够的。一般使用 OpenMV 对图像进行处理,将处理过后的数据使用串口发送给STM32,使用STM32控制小车行驶。本文主要讲解 OpenMV 模块与 STM32 间的串口通信以及两种循迹方案,分别是划分检测区域和线性回归。…...
C++ STL全面解析:六大核心组件之一----序列式容器(vector和List)(STL进阶学习)
目录 序列式容器 Vector vector概述 vector的迭代器 vector的数据结构 vector的构造和内存管理 vector的元素操作 List List概述 List的设计结构 List的迭代器 List的数据结构 List的内存构造 List的元素操作 C标准模板库(STL)是一组高效的…...
【c数据结构】OJ练习篇 帮你更深层次理解链表!(相交链表、相交链表、环形链表、环形链表之寻找环形入口点、判断链表是否是回文结构、 随机链表的复制)
目录 一. 相交链表 二. 环形链表 三. 环形链表之寻找环形入口点 四. 判断链表是否是回文结构 五. 随机链表的复制 一. 相交链表 最简单粗暴的思路,遍历两个链表,分别寻找是否有相同的对应的结点。 我们对两个链表的每个对应的节点进行判断比较&…...
微软开源GraphRAG的使用教程(最全,非常详细)
GraphRAG的介绍 目前微软已经开源了GraphRAG的完整项目代码。对于某一些LLM的下游任务则可以使用GraphRAG去增强自己业务的RAG的表现。项目给出了两种使用方式: 在打包好的项目状态下运行,可进行尝试使用。在源码基础上运行,适合为了下游任…...
使用Refine构建项目(1)初始化项目
要初始化一个空的Refine项目,你可以使用Refine提供的CLI工具create-refine-app。以下是初始化步骤: 使用npx命令: 在命令行中运行以下命令来创建一个新的Refine项目: npx create-refine-applatest my-refine-project这将引导你通过…...
【Docker】安装及使用
1. 安装Docker Desktop Docker Desktop是官方提供的桌面版Docker客户端,在Mac上使用Docker需要安装这个工具。 访问 Docker官方页面 并下载Docker Desktop for Mac。打开下载的.dmg文件,并拖动Docker图标到应用程序文件夹。安装完成后,打开…...
[大语言模型-论文精读] 以《黑神话:悟空》为研究案例探讨VLMs能否玩动作角色扮演游戏?
1. 论文简介 论文《Can VLMs Play Action Role-Playing Games? Take Black Myth Wukong as a Study Case》是阿里巴巴集团的Peng Chen、Pi Bu、Jun Song和Yuan Gao,在2024.09.19提交到arXiv上的研究论文。 论文: https://arxiv.org/abs/2409.12889代码和数据: h…...
提升动态数据查询效率:应对数据库成为性能瓶颈的优化方案
引言 在现代软件系统中,数据库性能是决定整个系统响应速度和处理能力的关键因素之一。然而,当系统负载增加,特别是在高并发、大数据量场景下,数据库性能往往会成为瓶颈,导致查询响应时间延长,影响用户体验…...
Prometheus+grafana+kafka_exporter监控kafka运行情况
使用Prometheus、Grafana和kafka_exporter来监控Kafka的运行情况是一种常见且有效的方案。以下是详细的步骤和说明: 1. 部署kafka_exporter 步骤: 从GitHub下载kafka_exporter的最新版本:kafka_exporter项目地址(注意ÿ…...
K3s离线安装保姆级避坑指南:从镜像准备到集群验证(含Harbor私有仓库配置)
K3s离线安装全流程实战:从私有仓库搭建到集群高可用 在金融、军工、政务等对网络安全要求极高的领域,离线环境部署Kubernetes集群已成为刚需。作为轻量级Kubernetes发行版,K3s凭借其小于50MB的二进制体积和内置组件简化设计,成为隔…...
AI嵌入式系统测试:融合经典方法与数据驱动验证的工程实践
1. 项目概述:当嵌入式遇见AI,测试的“变”与“不变”干了十几年嵌入式,从8位单片机玩到多核异构处理器,从裸机编程干到复杂的RTOS,我原以为测试这件事,左不过就是单元测试、集成测试、系统测试那几板斧&…...
开题不是写作文,是做设计——百考通AI助你交出一份真实可行的研究蓝图
开题报告是毕业论文或学位研究的“第一道学术关卡”,它不仅需要明确“研究什么”“为何研究”,更要清晰规划“如何研究”。然而,许多学生在撰写过程中常因经验不足而陷入困境:选题空泛、问题意识薄弱、文献综述缺乏主线、研究方法…...
避坑指南:VMware安装RockyLinux后网络不通、SSH连不上的常见问题排查与修复
Rocky Linux虚拟机网络故障排查实战指南 当你满怀期待地在VMware中安装好Rocky Linux,准备大展拳脚时,却发现网络连接失败、SSH无法访问——这种挫败感我深有体会。本文将带你直击问题核心,用系统化的排查思路解决这些"安装后困境"…...
权限管理测试
在 RuoYi(若依)系统中,要实现一个自定义接口的权限验证,通常需要遵循 “后端定义 -> 前端配置 -> 角色分配 -> 测试验证” 的流程。以下是具体的实施步骤及详细解析:第一步:后端定义接口并添加注解…...
8351健康管理中心用黑科技设备为企业家筑起生命防线
事业的成功固然值得骄傲,但如果没有健康作为根基,一切的辉煌都显得摇摇欲坠。对于每天在高压下决策、在商海中搏击的企业家而言,健康早已不是一句简单的口号,而是一场需要长期投入的战略投资。然而现实往往是,很多企业…...
c# 简单记录一下我学习的过程 2026.5.20
这一节有几个内容, 分别为方法返回值,方法值传递 ref out in 参数 以及params 参数列表。 接下来我会记录我对他们的理解。1.方法返回值 return有了return 你就可以把方法里面的值拿出来继续用 2.方法值传递分为两种 一个是值传递 一…...
墨水屏高效开发:架构、开源库与实战优化指南
1. 项目概述:为什么墨水屏开发值得深挖?如果你接触过电子墨水屏,第一印象可能是“反应慢”、“刷新有残影”、“只能显示黑白”。确实,相比我们手机、电脑上那些流光溢彩的LCD或OLED屏幕,墨水屏在响应速度和色彩表现上…...
别再只用BackgroundImage了!C# WinForm窗体背景图5种方法全解析(含PictureBox与资源文件实战)
别再只用BackgroundImage了!C# WinForm窗体背景图5种方法全解析 当我们需要为WinForm窗体添加背景图时,很多开发者会条件反射地使用BackgroundImage属性。这种习惯性选择虽然简单,但在实际项目中可能会遇到性能瓶颈、内存泄漏或适配问题。本文…...
水文水资源、水生态与水环境领域必修技能暨 ArcGIS Pro全流程实践技术学习及AI融合应用
ArcGIS Pro 是一款集数据采集、处理、分析和可视化于一体的强大 GIS 工具,广泛应用于水文、水资源、水生态和水环境等领域。其全面的功能使得研究人员能够高效地处理各种水文和环境数据,从而为科学研究和决策支持提供强有力的技术保障。在水文分析方面&a…...
