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

VueJS实现仅修改被点击图片的src属性问题求助

解决单个图片点击修改src的问题

你当前的问题是所有图片绑定了同一个icon变量,所以修改时会全部变化。针对非循环渲染的场景,有两种常用解决方式:

方案一:数据驱动(推荐,符合Vue设计理念)

给每个图片单独维护状态,通过点击事件传递标识来修改对应图片的src:

模板代码

<div id="app">
  <div>         
    <img :src="icons.img1" @click="change('img1')" />
  </div>
  <div>          
    <img :src="icons.img2" @click="change('img2')" />
  </div>
  <div>                
    <img :src="icons.img3" @click="change('img3')" />
  </div>
</div>

JS代码

const app = Vue.createApp({
  data() {
    return {
      // 给每个图片单独设置初始src
      icons: {
        img1: 'index.png',
        img2: 'index.png',
        img3: 'index.png'
      }
    }
  },
  methods: {
    // 根据传入的标识修改对应图片的src
    change(imgKey) {
      this.icons[imgKey] = 'icon.png'
    }
  }
})
        
app.mount('#app')

方案二:直接操作DOM(快速解决)

通过事件对象获取当前点击的图片元素,直接修改它的src属性:

模板代码

<div id="app">
  <div>         
    <img :src="icon" @click="change($event)" />
  </div>
  <div>          
    <img :src="icon" @click="change($event)" />
  </div>
  <div>                
    <img :src="icon" @click="change($event)" />
  </div>
</div>

JS代码

const app = Vue.createApp({
  data() {
    return {
      icon: 'index.png'
    }
  },
  methods: {
    change(e) {
      // 获取当前点击的img元素,修改其src
      e.target.src = 'icon.png'
    }
  }
})
        
app.mount('#app')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:06:17