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

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

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


http://www.kler.cn/news/148144.html

相关文章:

  • 从赛车到服务台:IT团队可以从F1赛车中学到什么?
  • 了解JSX
  • 算法效率的度量
  • Mysql面经
  • 4.Spring源码解析-loadBeanDefinitions(XmlBeanDefinitionReader)
  • 2161根据数字划分数组
  • 没有哈希时间锁定合约的跨链原子交换
  • 为社会做贡献的EasyDarwin 4.0.1发布了,支持视频点播、文件直播、摄像机直播、直播录像、直播回放、录像MP4合成下载
  • 第十五届蓝桥杯(Web 应用开发)模拟赛 1 期-大学组(详细分析解答)
  • Xilinx Zynq-7000系列FPGA任意尺寸图像缩放,提供两套工程源码和技术支持
  • 如何在nginx中进行路径的重写并进行转发到指定服务器
  • 34970A 数据采集 / 数据记录仪开关单元
  • PyCharm简介与安装
  • 【Linux】探索进程的父与子
  • rancher2.6 docker版本部署
  • 系列八、key是弱引用,gc垃圾回收时会影响ThreadLocal正常工作吗
  • 【数据库】基于排序算法的去重,集合与包的并,差,交,连接操作实现原理,执行代价以及优化
  • 短视频账号矩阵系统开发--saas源头技术开发(手机版)
  • 数据中台之核心调度模块的设计
  • [pyqt5]pyqt5设置窗口背景图片后上面所有图片都会变成和背景图片一样
  • 同旺科技 USB 转 RS-485 适配器
  • Vue实现封装自定义指令
  • ROC及曲线面积汇总学习
  • 数据库数据恢复—MongoDB数据库文件拷贝出现错误的数据恢复案例
  • 第四十四天|518. 零钱兑换 II 377. 组合总和 Ⅳ
  • P9231 [蓝桥杯 2023 省 A] 平方差(拆分问题)
  • 一. BEV感知算法介绍
  • 小白必知:AIGC 和 ChatGPT 的区别
  • ESP32-Web-Server编程-JS 基础 1
  • YOLOv8 训练自己的分割数据集