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

ESP32-Web-Server编程- JS 基础 4

ESP32-Web-Server编程- JS 基础 4

概述

HTML 内联事件处理器,你永远不应该使用 HTML 事件处理器属性——因为那些已经过时了,使用它们是不好的做法。

在前端编程中,除了将期望发生的事件写为 JS 文件外,还可以使用一些组件自带的事件处理器。

比如可以使用 button 组件的 onclick 内联属性,实现在网页上点击按钮,切换 LED 灯图标的转变。

但是 HTML 和你的 JavaScript (内联属性)混在一起不是一个好主意,因为它使得整个文件变得难以阅读。

<p><button onclick="document.getElementById('text').style.color='red'">Red Text</button>
</p>

建议使用独立的函数来控制元素属性,这样容易增加函数的可复用性,并保持 HTML 和 JS 相对独立:

 <p><button onclick="bgChange()">Change Background</button></p><script>function bgChange() {const randomHex = () => `#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, "0")}`;document.body.style.backgroundColor = randomHex();}</script>

需求及功能解析

本节主要演示 JavaScript (内联属性)的用法,以及通过建立独立的函数来完成同样的功能。读者可以对比两种处理方法。

示例解析

前端设计

前端代码建立了五个 button,点击不同的 button 可以实现对应的文本颜色的切换。前四个 button 使用 onclick 内联属性。最后一个 button,通过函数 bgChange() 来完成相同的功能。

<body><h1>Change text style</h1><p id="text">This text will change style.</p><p><button onclick="document.getElementById('text').style.color='red'">Red Text</button></p><p><button onclick="document.getElementById('text').style.color='blue'">Blue Text</button></p><p><button onclick="document.getElementById('text').style.display='none'">Hide Text</button></p><p><button onclick="document.getElementById('text').style.display='block'">Show Text</button></p><p><button onclick="bgChange()">Change Background</button></p><script>function bgChange() {const randomHex = () => `#${Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, "0")}`;document.body.style.backgroundColor = randomHex();}</script><p><img id="imageLamp" src="light_on.png">
</p>
<p><button onclick="document.getElementById('imageLamp').src='light_on.png'">Turn on the light</button>
</p>
<p><button onclick="document.getElementById('imageLamp').src='light_off.png'">Turn off the light</button>
</p>

示例效果

点击不同的按钮可以切换网页的显示效果:

在这里插入图片描述

总结

1)本节主要是演示在前端设计中,通过 HTML 内联事件处理器或者 JavaScript 函数实现对应事件的处理。

2)在前端开发中,应尽可能使用 JavaScript 函数,而不是 内联事件处理器,后者在大型项目中维护不方便,容易因为维护问题。

资源链接

1)ESP32-Web-Server ESP-IDF系列博客介绍
2)对应示例的 code 链接 (点击直达代码仓库)

3)下一篇:ESP32-Web-Server编程- JS 基础5

(码字不易感谢点赞或收藏)

相关文章:

  • 深入理解MySQL索引及事务
  • Helm3部署kubeview资源可视化工具
  • 4-Python与设计模式--抽象工厂模式
  • fiddler设置手机端抓包看这篇文章就足够了,轻松解决!
  • CSP认证2023-03:田地丈量、垦田计划、LDAP,python满分解答代码
  • Echarts legend图例配置项 设置位置 显示隐藏
  • 卷积神经网络(Inception-ResNet-v2)交通标志识别
  • UE 事件分发机制 day9
  • “SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价及拓展应用
  • vue中:计算属性computed
  • oracle rac环境归档日志清除
  • fiddler设置过滤你就这样做,一做一个不只声!
  • 智能优化算法应用:基于教与学算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 进程、线程以及进程与线程的区别
  • 物理机虚拟化关键技术介绍
  • C++11: atomic 头文件
  • ES2017异步函数现已正式可用
  • Java方法详解
  • magento2项目上线注意事项
  • Mysql数据库的条件查询语句
  • React组件设计模式(一)
  • 分布式任务队列Celery
  • 我建了一个叫Hello World的项目
  • 消息队列系列二(IOT中消息队列的应用)
  • kubernetes资源对象--ingress
  • ​Spring Boot 分片上传文件
  • #13 yum、编译安装与sed命令的使用
  • #define,static,const,三种常量的区别
  • #includecmath
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • $$$$GB2312-80区位编码表$$$$
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (6)设计一个TimeMap
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C++17) std算法之执行策略 execution
  • (HAL库版)freeRTOS移植STMF103
  • (阿里云万网)-域名注册购买实名流程
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (四)图像的%2线性拉伸
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (译)2019年前端性能优化清单 — 下篇
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)winform之ListView
  • .NET 4.0中的泛型协变和反变
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .NET导入Excel数据
  • .NET的微型Web框架 Nancy
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • @Autowired @Resource @Qualifier的区别
  • @PreAuthorize注解
  • @拔赤:Web前端开发十日谈
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题