You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript 如何实现元素集合点击时切换当前与其余项src属性

问题原因

你原有代码的核心问题是事件回调里的ev[i]仅指向绑定事件时对应索引的单个元素,没有遍历整个元素集合重置所有项的状态,自然达不到单选切换的效果。另外注意:<p>标签本身不存在src属性,如果你是要操作图标元素,大概率选择器应该匹配.event下的<img>标签,可根据实际DOM结构自行调整。

修正代码
const ev = document.querySelectorAll('.event p')

ev.forEach(item => {
  item.addEventListener('click', function(e) {
    // 第一步:先把所有元素的状态统一重置为未选中的warning图标
    ev.forEach(el => {
      el.src = './warning.png'
    })
    // 第二步:单独把当前点击的元素设置为选中的icon图标
    e.currentTarget.src = './icon.png'
  })
})
逻辑说明
  • 每次触发点击时,先遍历整个元素集合,把所有元素的src都设置为未选中状态对应的./warning.png,这一步会把之前点击选中过的元素状态全部重置
  • 全量重置完成后,再单独修改当前点击元素的src为选中状态对应的./icon.png,就能实现互斥的单选切换效果
  • 用forEach遍历比传统for循环写法更简洁,也不会出现闭包、索引指向异常之类的问题

内容的提问来源于stack exchange,提问作者user3573535

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:27:16