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

HTML修改图片src后getAttribute获取初始值问题求助

问题解决思路与方案

核心问题原因

你用getAttribute("src")只能拿到HTML标签上写的初始属性值,因为动态修改src后,更新的是DOM对象的属性(property),而非HTML上的特性(attribute),二者不会自动同步。直接读取img元素.src才能拿到当前实际显示的图片地址,不过更靠谱的方式是用自定义属性或类来标记选中状态,不用依赖src字符串判断。

原生JS解决方案

先给HTML结构做简单调整,给每行图片加统一容器类,给图片加自定义属性存原始和选中状态的地址:

<!-- 每行图片放在统一容器里 -->
<div class="img-row">
  <img src="normal1.png" class="row-img" data-normal="normal1.png" data-selected="selected1.png">
  <img src="normal2.png" class="row-img" data-normal="normal2.png" data-selected="selected2.png">
</div>
<div class="img-row">
  <img src="normal3.png" class="row-img" data-normal="normal3.png" data-selected="selected3.png">
</div>

然后写JS逻辑:

// 给所有图片绑定点击事件
document.querySelectorAll('.row-img').forEach(img => {
  img.addEventListener('click', function() {
    // 找到当前图片所在的行容器
    const currentRow = this.closest('.img-row');
    // 遍历该行所有图片,取消选中状态
    currentRow.querySelectorAll('.row-img').forEach(otherImg => {
      otherImg.src = otherImg.dataset.normal;
    });
    // 把当前图片设为选中状态
    this.src = this.dataset.selected;
  });
});

jQuery解决方案

如果习惯用jQuery,逻辑类似:

$('.row-img').on('click', function() {
  const $currentRow = $(this).closest('.img-row');
  // 取消该行其他图片的选中状态
  $currentRow.find('.row-img').not(this).attr('src', function() {
    return $(this).data('normal');
  });
  // 设置当前图片为选中
  $(this).attr('src', $(this).data('selected'));
});

更优的状态管理方式(推荐)

不用靠src判断选中状态,而是用CSS类标记,语义更清晰:

document.querySelectorAll('.row-img').forEach(img => {
  img.addEventListener('click', function() {
    const currentRow = this.closest('.img-row');
    // 移除该行所有图片的选中类并恢复原图
    currentRow.querySelectorAll('.row-img.is-selected').forEach(selectedImg => {
      selectedImg.classList.remove('is-selected');
      selectedImg.src = selectedImg.dataset.normal;
    });
    // 给当前图片添加选中类并切换到选中图
    this.classList.add('is-selected');
    this.src = this.dataset.selected;
  });
});

这样后续维护时,不用再纠结src里的字符串,直接通过类就能判断状态,出错概率更低。

内容的提问来源于stack exchange,提问作者Wallace B. McClure

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:45:34