本文讲解如何通过 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 遍历方法精准定位目标节点。这一模式可轻松扩展至其他场景(如展开/收起、启用/禁用、计数器等),是前端开发中的基础工程实践。
# css # javascript # java # html # js # 前端 # 浏览器 # ssl # 前端开发 # ai # red
相关栏目: 【 公司新闻 】 【 行业动态 】 【 常见问题 】 【 技术学院 】 【 推广学院 】 【 AI模型 】
相关推荐: Win11怎么开启远程桌面_Win11系统远程桌面启用开关 C++如何将C风格字符串(char*)转换为std::string?(代码示例) MAC怎么用连续互通相机里的“桌上视角”_MAC在视频通话中同时展示人脸和桌面 Win11如何更新显卡驱动 Win11检查和安装设备驱动程序【方法】 如何用::实现工具类方法调用_php静态工具类设计技巧【技巧】 最高效的 Go 语言 Zlib 解压缩流式解析方法 Win11怎么设置默认图片查看器_Windows11照片应用关联设置 C++友元类使用场景_C++类间协作设计方式讲解 短链接还原php提示内存不足_调整PHP内存限制设置【技巧】 如何使用Golang recover捕获panic_防止程序崩溃并处理异常 PHP 中如何在函数内持久化修改引用变量的指向 Golang如何遍历目录文件_Golang filepath.Walk目录遍历操作方法 Go语言中正确反序列化多个同级XML元素为结构体切片的方法 Windows10如何删除Windows.old_Win10磁盘清理系统文件选项 Win11怎么关闭内容自适应亮度_Windows11显示设置CABC关闭 Win10系统字体模糊怎么办_Windows10高级缩放设置修复 如何使用Golang反射检测值是否为nil_判断空指针或未初始化对象 Win11怎么更改鼠标指针_Windows 11自定义鼠标样式与大小【美化】 Python爬虫项目实战教程_Scrapy抓取与存储数据实例 如何使用正则表达式提取以编号开头、后接多个注解的逻辑分组块 c++中如何计算坐标系中两点间距离_c++勾股定理求距离 mac怎么安装字体_MAC添加第三方字体与字体册管理【教程】 如何在Golang中实现WebSocket广播_使用Channel和协程分发消息 Mac如何整理桌面文件_Mac使用堆栈功能一键整理 c++如何使用C++20 Modules模块_c++ import语法与编译速度提升【教程】 Windows10电脑怎么设置虚拟内存_Win10高级系统设置性能 如何使用Golang安装API文档生成工具_快速生成接口文档 Win11怎么关闭任务栏小图标_Windows11任务栏角溢出设置 如何在 Laravel 中通过嵌套关联关系进行 orderBy 排序 Python多进程教程_multiprocessing模块实战 php485在php5.6下能用吗_php485旧版本兼容性问题说明【详解】 Win11怎么清理C盘OneDrive缓存_Win11清理OneDrive缓存技巧【方法】 如何使用Golang优化模块引入路径_Golanggo mod tidy清理与优化方法 Win11如何连接Xbox手柄 Win11蓝牙连接游戏手柄教程【步骤】 php本地部署后数据库连接报错_1045accessdenied错误解决方法详解【汇总】 c++如何实现多态性_c++ 虚函数表原理与动态绑定机制【教程】 php订单日志权限怎么设_php订单日志文件权限设置技巧【技巧】 如何使用Golang写入二进制文件_Golang io Write二进制写入示例 Win10怎样清理C盘Steam游戏缓存_Win10清理Steam游戏缓存步骤【步骤】 如何在JavaScript中动态拼接PHP的base_url与jQuery变量 Windows10怎么备份注册表_Windows10注册表备份步骤【教程】 Windows10系统怎么查看设备管理器_Win10快捷键Win+X菜单使用 php会话怎么开启_session_start函数的作用与使用时机【方法】 Win11怎么关闭任务栏小组件_Windows11隐藏任务栏天气图标 LINUX怎么进行文本内容搜索_Linux grep命令正则表达式用法大全【教程】 如何在 PHP 单元测试中正确模拟带方法的图像处理门面(Facade) php中作用域操作符能访问私有静态属性吗_访问权限限制【指南】 Mac怎么设置鼠标滚动速度_Mac鼠标设置详细参数 Python脚本参数接收_sys与argparse解析【指导】 Win10怎么卸载爱奇艺_Win10彻底卸载爱奇艺方法【步骤】