更改img标签中的src属性值,但是浏览器中的图片并没有更新

问题产生如题,原先代码如下:

<!DOCTYPE html> 
<html>
  <head>
    <title>login.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

	<script type="text/javascript">
		function changeCode() {
			var img = document.getElementsByTagName("img")[0];
			img.src = "/161220/servlet/confirmCode”
		}
	</script>
  </head>
  
  <body>
    <form action="#" method="post">
    	用户名:<input type="text" name="userName"/><br>
    	密码:<input type="password" name="pwd"/><br>
    	验证码:<input type="text" name="confirmCode"/>
    	<img src="/161220/servlet/confirmCode" onclick="changeCode()"/>
    	<a href="javascript:changeCode()">看不清换一张</a><br>
    	<input type="submit" value="登录"/><br>
    </form>
  </body>
</html>

原因是:更新src后,如果src与原来的相同,则浏览器回从缓存里获取图片而不会向后台发送新的请求。

解决办法:可以在src之后加上一些没有意义的随机参数比如链接上“?time=new Date().getTime()”即获取当前时间的时间戳,这是浏览器会认为这是不同的url因此会重新发送请求加载新的图片。

应用场景:比如在刷新验证码图片时。

修改后的代码:

<!DOCTYPE html> 
<html>
  <head>
    <title>login.html</title>
	
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

	<script type="text/javascript">
		function changeCode() {
			
			var img = document.getElementsByTagName("img")[0];
			
			img.src = "/161220/servlet/confirmCode?time=" + new Date().getTime();
		}
	</script>
  </head>
  
  <body>
    <form action="#" method="post">
    	用户名:<input type="text" name="userName"/><br>
    	密码:<input type="password" name="pwd"/><br>
    	验证码:<input type="text" name="confirmCode"/>
    	<img src="/161220/servlet/confirmCode" onclick="changeCode()"/>
    	<a href="javascript:changeCode()">看不清换一张</a><br>
    	<input type="submit" value="登录"/><br>
    </form>
  </body>
</html>


<think>好的,我现在要解决用户的问题:如何使用jQuery更改img标签src属性值。首先,我需要回忆一下jQuery的相关方法,尤其是操作属性的函数。记得jQuery中常用的属性操作方法是attr(),所以可能用这个来设置src属性。 接下来,根据用户提供的引用内容,特别是引用[1]和[2],里面提到使用attr()方法来设置src属性。例如,$("#img_scr").attr("src", "/yibiao_ocr/" + res.url); 这说明正确的语法是通过选择器选中img元素,然后用attr()方法修改src的值。此外,引用[3]中的例子也展示了通过改src来实现图片轮换效果,进一步验证了这个方法。 过,用户可能遇到图片缓存的问题,比如修改src图片没有重新加载。这时候需要添加时间戳或者随机数来绕过缓存,如引用[4]中的例子,在URL后面加上Math.random()生成随机参数,确保每次请求都是新的,避免浏览器使用缓存。这也是需要注意的地方。 然后,我需要考虑同的使用场景。比如,如果img标签有ID,可以直接用ID选择器;如果没有,可能需要用类选择器或者其他属性选择器。同时,动态修改src后,是否需要处理加载失败的情况,比如使用error事件来替换默认图片,这也是提升用户体验的一部分。 总结步骤的话,应该是先选择目标img元素,然后使用attr()方法设置新的src值,如果需要避免缓存,添加随机参数。此外,处理可能出现的图片加载错误的情况。最后,通过示例代码来展示具体实现,确保用户能够清楚操作步骤。</think>要使用jQuery修改img标签src属性值,可以通过以下步骤实现: ### 一、基础方法 使用`attr()`方法修改属性: ```javascript // 通过ID选择器定位img元素 $("#imgId").attr("src", "new_image.jpg"); // 通过类选择器定位(修改多个元素) $(".imgClass").attr("src", "new_image.jpg"); ``` *示例引用:引用[2]中通过`$("#img_scr").attr("src", url)`实现动态路径修改[^2]* --- ### 二、避免缓存问题 若遇到浏览器缓存导致图片更新,可在URL后添加随机参数: ```javascript let newSrc = "image.jpg?t=" + new Date().getTime(); $("#imgId").attr("src", newSrc); // 或使用随机数(引用[4]方法) $("#imgId").attr("src", "/servlet/CreateValidateNum?" + Math.random()); ``` [^4] --- ### 三、动态交互场景 在图片轮播等场景中,可结合事件触发修改: ```javascript // 点击按钮切换图片 $("#nextBtn").click(function() { $("#sliderImg").attr("src", "next_image.jpg"); }); // 定时轮换(引用[3]案例) let interval = setInterval(() => { $("#sliderImg").attr("src", dynamicImagePath()); }, 3000); ``` [^3] --- ### 四、错误处理 添加图片加载失败的备用方案: ```javascript $("#imgId").on("error", function() { $(this).attr("src", "fallback.jpg"); }); ``` --- ### 五、完整示例 ```html <img id="demoImg" src="default.jpg"> <button id="changeBtn">更换图片</button> <script> $("#changeBtn").click(function() { $("#demoImg").attr("src", "new_image.jpg?" + Date.now()); }); </script> ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值