导航
电话
咨询
地图
顶部
本文讲解如何通过 javascript 为页面中多个 `
在实际开发中,我们常需为一组结构相似的元素(如任务列表)添加交互功能。例如:每项后配一个“toggle”按钮,点击后仅该行文本添加 .done 类以显示删除线效果。但若直接复制相同 id(如 id="Btn" 或 id="liEl"),会导致 document.getElementById() 始终只返回第一个匹配元素——这正是原始代码仅作用于首项的根本原因。
正确做法是:用 class 替代 id 实现批量选择,并为每个按钮单独绑定事件处理逻辑。
✅ 推荐 HTML 结构(语义化 + 可维护):
✅ 对应 CSS 样式(保持不变):
.done { text-decoration: line-through; text-decoration-thickness: 0.2rem; text-decoration-color: red; }
✅ 现代化 JavaScript 实现(推荐使用 forEach + closest 提升健壮性):
document.querySelectorAll('.toggle-btn').forEach(button => { button.addEventListener('click', () => { // 向上查找最近的同级
⚠️ 注意事项:
对应 JS:
button.addEventListener('click', () => { const taskItem = button.closest('.task-item'); const listItem = taskItem?.querySelector('.list-item'); listItem?.classList.toggle('done'); });
总结:实现多组独立交互的核心在于用类选择器批量获取元素,并为每个实例单独注册事件监听器,同时借助 DOM 遍历方法精准定位目标节点。这一模式可轻松扩展至其他场景(如展开/收起、启用/禁用、计数器等),是前端开发中的基础工程实践。
# ai # html # js # 前端 # 前端开发 # red # javascript # java # 浏览器 # ssl # css
相关栏目: 【 行业资讯 】 【 网络运营 】 【 GEO优化 】 【 营销推广 】 【 SEO优化 】 【 技术教程 】 【 代码知识 】 【 AI推广 】
相关推荐: Windows如何使用BitLocker To Go加密U盘?(移动驱动器加密) GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息? Win11开机Logo怎么换_Win11自定义启动画面工具【高级】 Win10怎样安装Excel数据分析工具_Win10安装分析工具包步骤【教程】 php转exe用什么工具打包快_高效打包软件推荐【汇总】 Mac怎么进行语音输入_Mac听写功能设置与使用【教程】 如何使用Golang安装API文档生成工具_快速生成接口文档 win10无法切换用户 Win10无法切换账户解决方法 电脑的“网络和共享中心”去哪了_Windows 11新版网络设置指南【新手】 PHP的Workerman对架构扩展有啥帮助_应用场景【介绍】 Python网络日志追踪_请求定位解析【教程】 如何提升Golang JSON序列化性能_Golang JSON编码效率优化方法 Win11怎么更改盘符_Win11磁盘管理修改驱动器号【步骤】 如何优化Golang程序CPU性能_Golang CPU密集型任务优化方法 Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言 如何在Golang中处理云原生事件_使用Event和Notification机制 Python爬虫项目实战教程_Scrapy抓取与存储数据实例 Windows 10自带杀毒软件在哪_Windows 10打开和使用Windows安全中心 Windows 10怎么隐藏特定更新补丁_Windows 10使用微软官方工具wushowhide.diagcab c++ unordered_map怎么用 c++哈希表用法【教程】 Python并发安全问题_资源竞争说明【指导】 c++怎么使用std::unique实现去重_c++ 容器元素排序与连续重复删除【教程】 Win11 C盘满了怎么清理 Win11磁盘清理和存储感知使用教程【新手必看】 Go语言中正确反序列化多个同级XML元素为结构体切片的方法 如何在 Go 中可靠地测试含 time.Time 字段的结构体 Win11怎么关闭搜索历史_Win11清除任务栏搜索记录【隐私】 Win11怎么关闭搜索历史_Win11清除设备上的搜索历史记录 How to Properly Use NumPy in VS Code PHP主流架构怎么监控运行状态_工具推荐【操作】 Linux怎么设置磁盘配额_Linux系统Quota安装与用户空间限制【教程】 Win11怎么制作U盘启动盘_Win11原版系统安装盘制作【详解】 Windows11如何设置专注助手_Windows11专注助手使用攻略【技巧】 Python实现图数据库操作_Neo4j核心CRUD与图算法解析 c++如何实现一个高性能的环形队列(Ring Buffer)_c++无锁实现方法【并发】 Windows10如何查看保存的WiFi密码_Win10命令行netsh wlan查询 Windows10怎么用“讲述人”读屏辅助 Windows10轻松使用开启讲述人朗读屏幕文字帮助视障用户【教程】 php8.4匿名类怎么用_php8.4匿名类创建与使用场景【介绍】 如何使用Golang实现Web表单数据绑定_自动映射字段到结构体 php错误怎么开启_display_errors与log_errors的设置【汇总】 Win11任务栏怎么放到顶部_Win11修改任务栏位置方法【详细】 Win10怎么创建桌面快捷方式 Win10为应用创建快捷方式【步骤】 Win11截图快捷键是什么_Win11自带截图工具使用技巧【汇总】 如何使用Golang实现错误包装与传递_Golangfmt.Errorf%w使用实践 如何使用正则表达式精确匹配最多含一个换行符的 start-end 区段 win11 OneDrive怎么彻底关闭 Win11禁用并卸载OneDrive教程【分享】 C++如何使用std::async进行异步编程?(future用法) 新手学PHP架构总混淆概念咋办_重点梳理【教程】 如何使用Golang操作指针变量_Golang解引用与赋值实践 短链接怎么用php还原_从基础原理到代码实现教学【详解】 c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
赣ICP备2024031479号