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

JavaScript图片src未变更问题:实现两秒切换图片源失败求助

解决图片切换无效果的问题

嘿,我明白你的困扰——你写了每两秒切换两张图片的代码,但图片愣是没动静,对吧?让我帮你揪出问题所在~

问题根源

你一开始把document.getElementById('bannerPic').src赋值给变量pic,但这个操作是一次性取值:之后你修改pic的内容,只是改变了变量本身,并没有把新的图片地址同步给img元素的src属性。简单说就是,你光在自己的变量里改来改去,没告诉浏览器“快更新图片地址呀!”

修正后的代码方案

这里给你两种可行的修改方式:

方案一:保留变量,同步更新元素属性

<img id="bannerPic" src="banner1.jpg"> 
<script> 
// 先获取img元素,而不是只拿它的src值
var picElement = document.getElementById('bannerPic');
// 用变量记录当前显示的图片名称
var currentPic = 'banner1.jpg';

setInterval(function(){ 
  if(currentPic === 'banner1.jpg'){ 
    currentPic = 'banner2.jpg';
    console.log('切换到banner2'); 
  } else{ 
    currentPic = 'banner1.jpg';
    console.log('切换到banner1'); 
  }
  // 关键步骤:把新的图片地址赋值给元素的src属性
  picElement.src = currentPic;
}, 2000); 
</script>

方案二:直接操作元素的src(更简洁)

<img id="bannerPic" src="banner1.jpg"> 
<script> 
var picElement = document.getElementById('bannerPic');

setInterval(function(){ 
  // 用includes判断,避免浏览器把相对路径转成绝对路径导致判断失效
  if(picElement.src.includes('banner1.jpg')){ 
    picElement.src = 'banner2.jpg';
    console.log('切换到banner2'); 
  } else{ 
    picElement.src = 'banner1.jpg';
    console.log('切换到banner1'); 
  }
}, 2000); 
</script>

额外提醒

为什么用includes而不是直接判断等于banner1.jpg?因为浏览器会自动把相对路径(比如banner1.jpg)转换成完整的绝对路径(比如http://你的域名/banner1.jpg),直接用===判断会匹配失败,includes能避开这个问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:00:56