本文讲解如何通过 javascript 为页面中多个 `
在实际开发中,我们常需为一组结构相似的元素(如任务列表)添加交互功能。例如:每项后配一个“toggle”按钮,点击后仅该行文本添加 .done 类以显示删除线效果。但若直接复制相同 id(如 id=”Btn” 或 id=”liEl”),会导致 document.getElementById() 始终只返回第一个匹配元素——这正是原始代码仅作用于首项的根本原因。
正确做法是:用 class 替代 id 实现批量选择,并为每个按钮单独绑定事件处理逻辑。
✅ 推荐 html 结构(语义化 + 可维护):
Target This element toggle Target This element toggle Target This element toggle
✅ 对应 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', () => { // 向上查找最近的同级 (更安全,不依赖固定 DOM 顺序) const listItem = button.previousElementSibling; if (listItem && listItem.classlist.contains('list-item')) { listItem.classList.toggle('done'); } }); });
⚠️ 注意事项:
Target This element toggle
对应 JS:
button.addEventListener('click', () => { const taskItem = button.closest('.task-item'); const listItem = taskItem?.querySelector('.list-item'); listItem?.classList.toggle('done'); });
总结:实现多组独立交互的核心在于用类选择器批量获取元素,并为每个实例单独注册事件监听器,同时借助 DOM 遍历方法精准定位目标节点。这一模式可轻松扩展至其他场景(如展开/收起、启用/禁用、计数器等),是前端开发中的基础工程实践。
虚拟币炒币哪里做的好呢?虚拟币炒币APP前十名推荐2026
Puppeteer 多页批量爬取与结构化数据存储完整教程