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

零基础快速入门前端蓝桥杯真题速刷2451.灯的颜色变化(助力保底拿奖不捐款)深入掌握 DOM 选择器与定时器:从交通灯案例到蓝桥杯 Web 考点全解 将原题目扩展成交通灯

2451.灯的颜色变化深入掌握 DOM 选择器与定时器从交通灯案例到蓝桥杯 Web 考点全解在蓝桥杯 Web 方向竞赛中DOM 操作与定时器控制是高频考点。本文以一个经典的交通灯控制案例为切入点全面解析document.querySelector的 ID/Class 选择语法、style.display显隐控制、setInterval与setTimeout的核心区别并提供记忆技巧、对比表格及拓展真题实战。 案例原始代码回顾// 显示红色灯 function red() { document.querySelector(#redlight).style.display inline-block; document.querySelector(#greenlight).style.display none; document.querySelector(#defaultlight).style.display none; } // 显示绿色灯 function green() { document.querySelector(#redlight).style.display none; document.querySelector(#greenlight).style.display inline-block; document.querySelector(#defaultlight).style.display none; } // 交通灯计时控制3秒红6秒绿后停止 function trafficlights() { var number 0; var timer setInterval(() { number; if (number 3) { // 3秒后亮红灯 red(); } else if (number 6) { // 6秒后亮绿灯并停止 green(); clearInterval(timer); } }, 1000); }一、DOM 选择器核心语法querySelector与 ID/Class 实战1.1document.querySelector基础querySelector接受一个CSS 选择器字符串返回文档中匹配的第一个元素。若需所有匹配元素使用querySelectorAll。// 通过 ID 选择必须加 # const redLight document.querySelector(#redlight); // 推荐 // 通过 Class 选择必须加 . const greenLight document.querySelector(.greenlight); // 通过标签名选择 const div document.querySelector(div); // 通过属性选择 const input document.querySelector([typebutton]);1.2 ID 与 Class 获取方式的语法差异对比方法语法示例返回类型匹配规则性能querySelector(#id)document.querySelector(#box)单个元素或nullCSS 选择器支持任意复杂选择器中等getElementById(id)document.getElementById(box)单个元素或null仅通过 ID不加 #最快querySelector(.class)document.querySelector(.item)单个元素或null返回第一个匹配的 class中等getElementsByClassName(class)document.getElementsByClassName(item)HTMLCollection动态集合通过 class 名返回所有匹配元素较快getElementsByTagName(div)document.getElementsByTagName(div)HTMLCollection通过标签名较快1.3 记忆技巧 #像一把钩子钩住唯一的 ID.像一粒种子撒向多个 class。口诀ID 用井号#Class 用点号.记忆表格选择目标querySelector 写法传统方法写法记忆点ID#myIdgetElementById(myId)ID 就像身份证号唯一且带#Class.myClassgetElementsByClassName(myClass)Class 就像班级很多人用.二、style.display控制元素显隐2.1 常用属性值详解// 隐藏元素不占位 element.style.display none; // 显示为块级元素独占一行 element.style.display block; // 显示为行内块不独占一行可设宽高 element.style.display inline-block; // 恢复默认通常为 block 或 inline element.style.display ;2.2 各属性值对比表display 值是否可见是否占位典型场景none❌ 不可见❌ 不占位彻底隐藏元素如同不存在block✅ 可见✅ 占位块级元素如div、pinline✅ 可见✅ 占位行内元素无法设置宽高inline-block✅ 可见✅ 占位行内但可设宽高交通灯常用注意交通灯案例中使用inline-block使三个灯水平排列且可控制尺寸用none切换显示。三、定时器对决setIntervalvssetTimeout3.1 基本语法与停止方法// setTimeout延迟执行一次 let timer1 setTimeout(() { console.log(只执行一次); }, 1000); clearTimeout(timer1); // 取消执行 // setInterval间隔重复执行 let timer2 setInterval(() { console.log(每秒一次); }, 1000); clearInterval(timer2); // 停止循环3.2 核心区别对比表对比维度setIntervalsetTimeout执行次数无限次直到被清除仅一次间隔控制固定间隔重复调用延迟指定时间后调用一次停止方法clearInterval(timerId)clearTimeout(timerId)典型场景轮播图、倒计时、实时刷新延迟加载、动画暂停、防抖累加偏移问题可能存在任务执行时间 间隔无仅一次递归模拟替代可被递归setTimeout替代更精确无法直接替代setInterval3.3 记忆技巧 Interval → 中间有间隔重复Timeout → 时间到一次口诀Interval 反复横跳Timeout 一次就好Clear 记得要调用否则内存会爆掉。3.4 递归setTimeout实现精确循环蓝桥杯推荐写法let count 0; function loop() { console.log(执行第, count, 次); setTimeout(loop, 1000); // 递归调用确保上一次执行完再开始下一次 } setTimeout(loop, 1000);优势避免setInterval因代码执行耗时导致的间隔偏差更可控。四、交通灯案例深度分析与拓展红 → 黄 → 绿 循环4.1 原代码的优缺点✅ 优点逻辑清晰使用setInterval简单实现了顺序切换。❌ 缺点只执行一轮红3秒绿3秒后停止不满足实际交通灯循环需求。没有黄灯过渡与现实不符。未处理初始状态默认灯显示。4.2 蓝桥杯风格完整实现红→黄→绿循环递归setTimeout!DOCTYPE html html head style .traffic-light { display: inline-block; width: 80px; height: 80px; border-radius: 50%; margin: 10px; background-color: gray; } #redlight { background-color: red; } #yellowlight { background-color: yellow; } #greenlight { background-color: green; } .light-container { text-align: center; margin-top: 50px; } /style /head body div classlight-container div idredlight classtraffic-light/div div idyellowlight classtraffic-light/div div idgreenlight classtraffic-light/div /div button idstartBtn启动交通灯/button script // 获取灯元素 const redLight document.querySelector(#redlight); const yellowLight document.querySelector(#yellowlight); const greenLight document.querySelector(#greenlight); // 通用显隐函数 function showLight(lightToShow) { // 先将所有灯隐藏none 不占位 redLight.style.display none; yellowLight.style.display none; greenLight.style.display none; // 显示目标灯inline-block 保持占位和大小 lightToShow.style.display inline-block; } // 状态枚举 const STATES { RED: red, YELLOW: yellow, GREEN: green }; let currentState STATES.RED; let timerId null; // 核心循环函数递归setTimeout function runTrafficLight() { switch (currentState) { case STATES.RED: showLight(redLight); currentState STATES.YELLOW; timerId setTimeout(runTrafficLight, 3000); // 红灯亮3秒 break; case STATES.YELLOW: showLight(yellowLight); currentState STATES.GREEN; timerId setTimeout(runTrafficLight, 2000); // 黄灯亮2秒 break; case STATES.GREEN: showLight(greenLight); currentState STATES.RED; timerId setTimeout(runTrafficLight, 4000); // 绿灯亮4秒 break; default: break; } } // 启动交通灯先清除旧定时器 function startTrafficLight() { if (timerId) { clearTimeout(timerId); timerId null; } currentState STATES.RED; // 重置为红灯 runTrafficLight(); // 开始循环 } // 绑定按钮事件 document.querySelector(#startBtn).addEventListener(click, startTrafficLight); // 页面初始化默认显示红灯可选 startTrafficLight(); /script /body /html代码注释重点使用setTimeout递归替代setInterval避免循环内任务阻塞造成的延迟累积。通过switch状态机管理灯色顺序易于扩展。每次切换前先clearTimeout保证唯一定时器防止内存泄漏。五、蓝桥杯 Web 考点映射与真题技巧5.1 常见考点考点类别典型题目要求本题对应技能DOM 元素获取使用querySelector或getElementById获取元素获取交通灯元素并修改样式定时器控制实现自动轮播、倒计时或动画控制灯色切换时间事件绑定点击按钮启动/停止定时器添加开始按钮事件样式动态修改改变元素display、backgroundColor等属性切换灯可见性及颜色防止内存泄漏页面关闭或组件销毁时清除定时器使用clearTimeout/clearInterval性能优化用递归setTimeout代替setInterval避免间隔累积偏移5.2 真题变形示例题目设计一个红绿灯红灯亮 5 秒 → 黄灯亮 2 秒 → 绿灯亮 5 秒并无限循环。要求提供开始和暂停按钮暂停时清除定时器恢复后继续当前状态。解决方案思路记录当前状态和剩余时间。使用setTimeout递归 一个全局标志控制暂停恢复。暂停时clearTimeout并保存剩余时间恢复时重新设置定时器。六、知识点速查汇总表6.1 DOM 选择器总结需求推荐方法示例获取单个 ID 元素querySelector(#id)或getElementByIddocument.querySelector(#box)获取单个 Class 元素querySelector(.class)document.querySelector(.item)获取所有 Class 元素querySelectorAll(.class)document.querySelectorAll(.item)获取动态集合实时getElementsByClassName/getElementsByTagNamedocument.getElementsByClassName(item)6.2 定时器选择指南场景选择方案理由延迟执行一次setTimeout简单可靠固定间隔重复无阻塞风险setInterval代码简洁固定间隔重复任务耗时可能间隔递归setTimeout避免任务重叠和偏移需要暂停恢复的循环动画递归setTimeout 状态保存精确控制时间点6.3display属性速查值特性典型应用none隐藏不占位相当于元素消失模态框关闭、选项卡切换block块级独占一行可设宽高布局容器divinline行内不可设宽高多个并排文本修饰spaninline-block行内块不独占可设宽高导航栏、交通灯图标七、总结通过交通灯这个看似简单的案例我们串联了DOM 选择器尤其是 ID 与 Class 的querySelector语法、样式显隐控制以及JavaScript 定时器三大核心考点。掌握这些知识不仅能够应对蓝桥杯 Web 方向的常见操作题更能为复杂动画、轮播图、倒计时等实战功能打下坚实基础。最后送你一句记忆口诀ID 前带 #Class 点开花显隐 displaynone 与块家定时器分两家Interval 重复 Timeout 一下递归替代防偏差蓝桥杯上笑哈哈。 现在去点亮你自己的交通灯吧希望你的人生一路绿灯加油

相关文章:

零基础快速入门前端蓝桥杯真题速刷2451.灯的颜色变化(助力保底拿奖不捐款)深入掌握 DOM 选择器与定时器:从交通灯案例到蓝桥杯 Web 考点全解 将原题目扩展成交通灯

2451.灯的颜色变化深入掌握 DOM 选择器与定时器:从交通灯案例到蓝桥杯 Web 考点全解在蓝桥杯 Web 方向竞赛中,DOM 操作与定时器控制是高频考点。本文以一个经典的交通灯控制案例为切入点,全面解析 document.querySelector 的 ID/Class 选择语…...

学生成绩管理系统|基于springboot + vue学生成绩管理系统(源码+数据库+文档)

学生成绩管理系统 目录 基于springboot vue学生成绩管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue学生成绩管理系统 一、前言 博主介绍&…...

【物联网】基于STM32F429与TMS320F28377的储能变流器控制软件架构设计

目录 一、双处理器架构设计概述 (一)异构双核系统定位 (二)硬件资源协同策略 二、STM32F429ZGT6 核心功能开发 (一)系统管理模块设计 1. 任务调度与状态监控 2. 多源数据融合存储 (二&am…...

Docker 入门到进阶:容器化部署 Nginx + MySQL + WordPress 实战(附 Dockerfile、docker-compose.yml 详解)

前言在云原生时代,Docker 已成为开发与运维人员的必备技能。本文将带你从零开始,系统学习 Docker 核心概念与实战技巧,最终使用 Docker Compose 一键部署一套高可用的 WordPress 站点,其中包含 Nginx 作为反向代理、MySQL 作为数据…...

Linux 文件系统深度解析:ext4、XFS、inode、硬链接 vs 软链接 原理与实战

前言:为什么要深入理解文件系统? 在 Linux 系统中,文件系统是连接用户数据与物理存储介质的桥梁。每一行代码、每一张图片、每一条日志最终都会被文件系统转化为磁盘上数以亿计的比特位。然而,大多数开发者对文件系统的认知停留在…...

计算机毕业设计:Python二手车可视化平台 Django框架 可视化 线性回归 数据分析 机器学习 深度学习 AI 大模型(建议收藏)✅

1、项目介绍 技术栈 Python语言、Django框架、ECharts可视化库、机器学习线性回归预测算法、HTML、训练集与测试集划分、模型评估(均方误差MSE) 功能模块数据可视化分析大屏城市和车型分析里程与价格分析上牌日期分析和颜色分析词云图分析数…...

2025届必备的十大AI学术平台横评

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 就当前的学术写作场景而言,AI论文网站居然已经一变而成为研究者的重要辅助工具了…...

2025届必备的十大AI辅助写作工具推荐榜单

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek DeepSeek身为一款具备强大功能的大语言模型,于学术领域起着关键作用,…...

个人信息保护:使用AI工具必须知道的隐私安全指南

个人信息保护的重要性AI工具的普及带来了便利,但也存在隐私泄露风险。未经保护的个人信息可能被滥用,导致身份盗窃、诈骗等问题。了解隐私安全措施至关重要。选择可信的AI工具优先选择有明确隐私政策、数据加密措施的工具。查看工具是否通过第三方安全认…...

人生苦难的本质的庖丁解牛

“人生苦难的本质”,常被误解为“命运的不公”、“物质的匮乏”或“肉体的疼痛”。 但本质上,苦难并非来自外部世界的客观事件,而是源于**“内在预期”与“外在实相”之间的剧烈摩擦**,是**“有限的自我”试图掌控“无限的无常”时…...

失业期PHP程序员玻璃心,伪勤奋,固守旧认知的庖丁解牛

“失业期 PHP 程序员的玻璃心、伪勤奋、固守旧认知”,这三者并非独立的性格缺陷,而是一套互为因果的“心理防御闭环”。 它们共同构成了一个**“认知牢笼”**:因为害怕面对真实的残酷(玻璃心),所以用低价值…...

失业期PHP程序员极致利用时间的庖丁解

"失业期 PHP 程序员极致利用时间”,常被误解为“疯狂投简历”或“没日没夜地刷 LeetCode”。 但本质上,这是一场**“认知重构”与“资产增值”的特种战役**。 失业不是“空窗期”,而是上帝强行塞给你的**“全脱产战略转型期”**。 在在职…...

use Yii;的本质的庖丁解牛

use Yii; 这行代码,常被误解为“引入了一个类”或者“为了少打几个字”。 但本质上,它是 Yii 框架(尤其是 Yii2)架构哲学的“图腾”。 它标志着 Yii 选择了一条与 Laravel、Symfony 截然不同的道路:将核心功能暴露为一…...

基于SVC和PSS的电力系统暂态稳定性研究:Matlab/Simulink仿真与结果分析

基于SVC和PSS的电力系统暂态稳定性研究 【软件】Matlab/Simulink、Word; 【说明】通过仿真各类短路故障,验证静止无功补偿器(SVC)和电力系统稳定器(PSS)对于提高电力系统暂态稳定性的重要作用; 【文件】包括:Matlab/Simulink仿真模…...

PX4开发实战:uORB通信机制详解与代码实操(附避坑指南)

PX4开发实战:uORB通信机制详解与代码实操(附避坑指南) 在PX4飞控开发中,uORB(Micro Object Request Broker)作为核心通信机制,承担着模块间数据交换的重要职责。不同于传统嵌入式系统中的全局变…...

手把手教你用JoyAgent-JDGenie搭建自己的第一个AI智能体(附天气查询Agent代码)

手把手教你用JoyAgent-JDGenie搭建自己的第一个AI智能体(附天气查询Agent代码) 想象一下,你刚接触多智能体框架,面对复杂的系统架构和抽象概念,是不是有种无从下手的感觉?今天我们就用JoyAgent-JDGenie这个…...

Halcon局部可变形匹配实战:用‘垫片’案例手把手教你搞定弹性物体定位与缺陷检测

Halcon局部可变形匹配实战:弹性物体定位与缺陷检测全流程解析 在工业视觉检测领域,弹性零件的精准定位一直是工程师面临的棘手难题。想象一下,当您面对一批因冲压工艺差异导致厚度不均的橡胶垫片,或是装配过程中发生拉伸变形的金属…...

网络排障实战:当ping命令不好使时,如何用Wireshark抓包分析ICMP协议找出真凶?

网络排障实战:当ping命令失效时,如何用Wireshark解码ICMP协议故障 当你面对一台无法ping通的目标主机时,"请求超时"的提示就像一堵没有门的墙——它告诉你无法通行,却不会解释原因。作为运维工程师,我曾遇到…...

MinIO管理界面卡在Loading?别慌,Nginx反向代理漏了这几行WebSocket配置

MinIO管理界面卡在Loading?Nginx反向代理的WebSocket配置详解 当你通过Nginx反向代理访问MinIO管理界面时,发现页面一直卡在Loading状态,这可能是许多运维工程师都遇到过的问题。上周我在客户的生产环境部署中就遇到了这个典型的"陷阱&q…...

IEEE旗下通信类期刊全解析:从影响因子看学术风向标(2023最新版)

IEEE通信类期刊2023全景透视:影响因子背后的学术趋势与选刊策略 翻开最新发布的《期刊引证报告》(JCR2023),IEEE旗下通信类期刊的影响因子变化再次成为学界热议焦点。作为全球最大的专业技术组织之一,IEEE出版的期刊向…...

3款免费MySQL客户端实测对比:DBeaver、WorkBench、HeidiSQL哪个更适合你?

三款开源MySQL客户端深度横评:从安装到高阶功能的全方位指南 当Navicat的收费模式成为团队协作或个人开发的负担时,开发者们往往需要寻找功能相当但零成本的开源替代品。本文将基于实际工程经验,对DBeaver、MySQL Workbench和HeidiSQL这三款主…...

保姆级教程:用CAPL脚本在CANalyzer里离线计算电池Ah积分(附完整代码)

从零实现CANalyzer电池容量离线分析:CAPL脚本开发实战指南 在新能源汽车和储能系统的开发测试中,电池容量(Ah)的精确计算是评估电池性能的核心指标之一。对于刚接触CAN总线分析的工程师来说,如何在CANalyzer环境中搭建完整的离线分析流程&…...

云原生环境中的DevOps实践

云原生环境中的DevOps实践 🔥 硬核开场 各位技术老铁,今天咱们聊聊云原生环境中的DevOps实践。别跟我扯那些理论,直接上干货!在云原生时代,DevOps已经不是可选选项,而是必须掌握的生存技能。不搞DevOps&…...

云原生应用的微服务架构设计

云原生应用的微服务架构设计 引言:微服务架构的重要性 哥们,别整那些花里胡哨的!作为一个前端开发兼摇滚鼓手,我最烦的就是单体应用的臃肿和难以维护。在云原生时代,微服务架构已经成为构建现代应用的最佳实践。今天&a…...

Kubernetes集群的监控与告警方案

Kubernetes集群的监控与告警方案 引言:监控与告警的重要性 哥们,别整那些花里胡哨的!作为一个前端开发兼摇滚鼓手,我最烦的就是系统出问题还不知道。在云原生时代,Kubernetes集群的监控与告警是确保系统稳定运行的关…...

云原生环境中的边缘计算应用

云原生环境中的边缘计算应用 引言:边缘计算的崛起 哥们,别整那些花里胡哨的!作为一个前端开发兼摇滚鼓手,我最烦的就是延迟。在云原生时代,边缘计算让我们离用户更近,减少延迟。今天,我就给你们…...

Kubernetes中的StatefulSet应用实践

Kubernetes中的StatefulSet应用实践 引言:StatefulSet的重要性 哥们,别整那些花里胡哨的!作为一个前端开发兼摇滚鼓手,我最烦的就是有状态应用的部署问题。在云原生时代,StatefulSet是管理有状态应用的关键。今天&…...

5分钟搞定!Universal Pokemon Randomizer ZX:让宝可梦游戏焕发新生

5分钟搞定!Universal Pokemon Randomizer ZX:让宝可梦游戏焕发新生 【免费下载链接】universal-pokemon-randomizer-zx Public repository of source code for the Universal Pokemon Randomizer ZX 项目地址: https://gitcode.com/gh_mirrors/un/univ…...

如何运用AI技术有效破解企业视觉检测难题

「本文已用流量券推广,欢迎收藏 关注」AI智能体视觉检测系统(TVA)的核心突破,在于实现了从“被动识别”到“主动决策”的历史性跨越。以汽车零部件制造车间的经典场景为例,螺母焊接点的质检曾是长期困扰各个企业多年的…...

TVA:未来无人车间和智能工厂的质检中枢

「本文已用流量券推广,欢迎收藏 关注」当制造业加速迈向智能化,现代企业的竞争已从产能规模转向技术实力与品质管控能力。AI智能体视觉检测系统(TVA)作为智能制造的核心技术之一,正在成为企业构建智能工厂的关键支撑&…...