Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JavaScript更新图像src?_Javascript_Html_Image - Fatal编程技术网

使用JavaScript更新图像src?

使用JavaScript更新图像src?,javascript,html,image,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);

我有一个图像(
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>

选择一个号码:
A.
B
C
它在我第一次更改选项时起作用,但当我重新更改选项时,它会保留图像而不更改它


如何解决此问题?

您试图将图像标记作为
smg1
传递,但您没有声明这是您的图像元素

试试这个:

SwitchPic('img1');
然后在处理程序中:

function SwitchPic(picID) {
  var pic = document.getElementById(picID);
  pic.src = "img.png";
}
在这种情况下,您将传递要更改的元素的ID,然后获取处理程序中的实际元素。

两个问题:

  • 您的函数仅将其更改为该图像,而不是对其进行切换
  • 您正在传递一个未定义的变量
    img1
    。您需要传递图像的ID,然后使用该ID获取节点
  • 因此,您需要使用
    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;
        }
    }
    

    我认为你的问题在于:

  • 名为img.png的图像
  • 一个函数不断更改实际img.png与其他图像,但名称相同img.png
  • 您重新分配了图像标记src属性,但图像不会刷新
  • 如果是这样的话,那就是浏览器的图像缓存问题。 请参阅以下链接:


    希望有帮助

    可能只是缓存问题

    不只是使用文件名,而是向其添加一个随机部分,如“img.png?random”,这样您将强制浏览器在服务器上再次查找图像,但是?random部分将被丢弃,并且仍然会找到该文件


    最简单的方法是在扩展后添加日期/时间

    您的函数没有选择dom元素它是如何工作的?同样,实际图片已更改,但仍然是网页上的旧图片您希望将图片更改为什么?我刚刚注意到,您的原始图像和您尝试更改的图像都被命名为“img.png”。是否希望显示与下拉列表中所选选项相匹配的图片?否,有其他程序每次更改图片
    img.png
    时都会更改图片
    onchanged
    操作,函数
    show()
    调用它您可以发布
    show()
    函数的代码吗?我认为这个函数中可能有一些东西没有按您期望的方式运行。@user78050其他程序每次更改图片
    img.png
    ,这是什么意思。。?你能发布
    show()
    方法代码吗?我有相同的图片,不是original.png和img.png放在一起,只有img。png@user78050我不知道你的目录是什么样子,所以我无法引用图像的名称:
    original.png
    只是一个例子。你想根据下拉列表中选择的内容创建图像吗?我想说的是我有一个image@user78050我明白你在上面对Scunlife所说的:我同意
    show
    功能可能是这里的问题,你也应该发布它。简单地说,你不能再次请求image.png,浏览器会认为它已经缓存了图像,并继续显示相同的图像,因此,与其要求image.png,不如要求image.png?20140905155610(例如),只需使用
    var d=new Date();var image='image.png?'+d.getmillizes();图.src(图像),它应该可以解决您的问题