javascript - 图片上传前预览时通过id获取图片

标签 javascript jquery html image

我使用下面的脚本在上传图片之前预览图片。 我有一个这样的 html:

<div>
    <img id="image" src="#">
</div>

<input type="file" accept="image/gif, image/jpeg, image/png" onchange="readURL(this);">

和 js 是这样的: (我使用 jquery-2.0.0.min.js )

    function readURL(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();
            reader.onload = function (e) {
                $('#image').attr('src', e.target.result);
                };

                reader.readAsDataURL(input.files[0]);
            var image = document.getElementById('image');
            console.log(image);

        }}

我的问题是:当我在下载前使用此脚本显示图像时,我无法通过 var image = document.getElementById('image'); 获取图像和控制台日志显示:<img src="#" id="image"> .如何在上传之前获取其中显示的图像?

最佳答案

FileReader() .readAsDataURL() 方法异步返回结果。包括 var image = document.getElementById('image');console.log(image);console.log($("#image")[0])FileReader onload 事件处理程序中。

The FileReader object lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user's computer, using File or Blob objects to specify the file or data to read.

FileReader.readyState Read only

A number indicating the state of the FileReader. This is one of the following:

EMPTY 0 No data has been loaded yet.

LOADING 1 Data is currently being loaded.

DONE 2 The entire read request has been completed.

function readURL(input) {
   if (input.files && input.files[0]) {
     var reader = new FileReader();
     reader.onload = function(e) {
       // do stuff when `.readAsDataURL()` completes
       var image = document.getElementById("image");
       image.src = e.target.result;
       console.log(image, e.target.result, reader.DONE);
     };
     reader.readAsDataURL(input.files[0]);
   }
 }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <img id="image" src="#" />
</div>

<input type="file" accept="image/gif, image/jpeg, image/png" onchange="readURL(this);">

关于javascript - 图片上传前预览时通过id获取图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38198601/

相关文章:

javascript - select.val 在数组中返回未定义

javascript - Javascript 事件处理程序使用其范围之外的变量时出现问题

javascript - 如何让 localStorage 值为真?

jquery - 如何更改jquery上下文菜单的样式

c# - 如何隐藏一个div并在MVC中的按钮点击事件中显示另一个

c# - jQuery.html() 不能很好地与 Asp.Net innerHtml 一起工作

html - 喜欢点击时的图标颜色

c# - JavaScript window.open 有时返回 null

javascript - 如果在 jQuery 中完成多页,则后退按钮在浏览器中不起作用

javascript - 更改 CSS :before if and ID has a specific class