使用JavaScript更新图像src?

时间:2014-08-31 00:36:55

标签: javascript html image

我有一张图片(img.png),其内容在组合框更改后发生变化。

问题是当我更改页面上的组合框时图像的内容不会改变。

我尝试使用这样的JavaScript:

function SwitchPic(pic) {
    pic.src = "img.png";
}

并且img标记为:

<img src='img.png' id='img1' name='img1'>

和组合框标签是:

<select name="users" onchange="show(this.value);SwitchPic(img1);">
    <option value="">Select a Number:</option>
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
</select>

我第一次更改选项时工作,但是当我重新更改选项时,它会保留图像而不更改它。

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:7)

可能只是一个缓存问题 不要只使用文件名,而是添加随机部分,例如&#39; img.png?random&#39;,这样你就可以强制浏览器在服务器上再次查找图像,但是?无论如何都会丢弃随机部分,仍然会找到该文件 最简单的方法是在扩展名后添加日期/时间

答案 1 :(得分:3)

您试图将图片代码作为smg1传递,但您没有声明这是您的图片元素。

试试这个:

SwitchPic('img1');

然后在你的处理程序中:

function SwitchPic(picID) {
  var pic = document.getElementById(picID);
  pic.src = "img.png";
}

在这种情况下,您传递要更改的元素的ID,然后获取处理程序中的实际元素。

答案 2 :(得分:0)

两个问题:

  1. 您的功能将其更改为该图片,而不是将其切换。
  2. 您传递的变量img1未定义。您需要传递图像的ID,然后使用它来获取节点。
  3. 因此,您需要使用document.getElementById()来获取图片,然后每次都需要切换:

    var clicked = false;
    
    function SwitchPic(pic) {
        var image = document.getElementById(pic);
        if(!clicked){
            image.src = "otherImg.png";
            clicked = true;
        }else{
            image.src = "img.png";
            clicked = false;
        }
    }
    

    Demo

答案 3 :(得分:0)

我认为你的问题是:

  1. 名称为img.png。
  2. 的图像
  3. 一个函数不断改变实际的img.png与其他图像但名称相同img.png
  4. 您重新分配了图像标记src属性,但图像没有刷新。
  5. 如果是这种情况那么这是浏览器图像缓存的问题。 请参阅以下链接:

    How to reload/refresh an element(image) in jQuery

    how to force chrome not to reload images with same url till the page is refreshed ,like firefox

    How to force a web browser NOT to cache images

    希望它有所帮助!