【问题标题】:image is not show in img tag when upload it again再次上传时,图像不显示在 img 标签中
【发布时间】:2020-12-19 06:39:02
【问题描述】:

我使用下面的方法上传一张图片,并显示在一个img标签中。另一个按钮用于删除该图像。上传和删除工作正常,但问题是当我想在删除图像后再次上传图像时。它没有显示出来,当我打开控制台时,它没有找到图像 src。仅当我使用删除按钮删除图像时才会出现此问题。

 var loadFile = function(event) {
        var image = document.getElementById('output');
        image.src = URL.createObjectURL(event.target.files[0]);
    };

    function deleteFile() {
        var image = document.getElementById('output');
        image.parentNode.removeChild(image);
        var img = document.createElement("img");
        img.id = "output";
        $("#p_img").append(img);
    }


   
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button><label for="file">Upload Image</label </button>
    <button onclick="deleteFile()">Delete</button>
    <p><input type="file" accept="image/*" name="image" id="file" onchange="loadFile(event)" style="display: none;"></p>
     <p id="p_img"><img id="output" height="200" width="200"></p>

【问题讨论】:

标签: javascript html jquery image


【解决方案1】:

您的文件字段在删除后未触发“onchange”事件,解决此问题的一种方法是在您的删除方法中手动触发它。

var loadFile = function(event) {
        var image = document.getElementById('output');
        image.src = URL.createObjectURL(event.target.files[0]);
    };

    function deleteFile() {
        var image = document.getElementById('output');
        image.parentNode.removeChild(image);
        var img = document.createElement("img");
        img.id = "output";
        $('#file').val('');
        $("#p_img").append(img);
    }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button><label for="file">Upload Image</label </button>
    <button onclick="deleteFile()">Delete</button>
    <p><input type="file" accept="image/*" name="image" id="file" onchange="loadFile(event)" style="display: none;"></p>
     <p id="p_img"><img id="output" height="200" width="200"></p>

【讨论】:

  • 效果很好。谢谢 。但是我不明白那行 $('#file').val(''); 的含义
  • 触发你的'#file'标签上的onchange="loadFile(event)"函数,这是你用来显示图像的函数。您的删除按钮永远不会更改#file 的内容,它仍然包含“已删除”图像,因此它从未触发“onchange”事件。
  • 非常感谢。感谢您对我的帮助。
猜你喜欢
  • 2021-11-30
  • 2014-09-29
  • 1970-01-01
  • 2023-03-23
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
相关资源
最近更新 更多