2016-07-05 61 views
1

我使用下面的腳本在上傳之前預覽圖像。 我有這樣的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); 

     }} 

我的問題是這樣的:當我下載我之前可以顯示圖像使用此腳本」 t得到圖像var image = document.getElementById('image');和控制檯日誌顯示此:<img src="#" id="image">。上傳前如何顯示圖片?

+0

你想從'img'得到哪些數據? –

+0

@RoryMcCrossan當我選擇圖像與輸入我顯示這個,但我不能用'document.getElementById('圖像')' –

回答

2

​​.readAsDataURL()方法異步返回結果。包括var image = document.getElementById('image');console.log(image);console.log($("#image")[0])FileReaderonload事件處理程序。

FileReader對象允許Web應用程序異步讀取使用文件或BLOB對象指定文件存儲在用戶的計算機上, 上的文件(或原始數據緩衝區)或數據的 內容閱讀。

FileReader.readyState只讀

一個數字,指示FileReader的狀態。這是以下之一:

EMPTY 0尚未加載任何數據。

LOADING 1當前正在加載數據。

完成2整個讀取請求已完成。

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);">

+0

Tnx爲你的答案:)。那麼我怎樣才能改變我的腳本? –

+0

這和問題中的代碼有什麼區別?除了檢索異步回調中的'img'之外,它在邏輯上是相同的。 –

+1

@RoryMcCrossan _「這與問題中的代碼有什麼區別?」_作爲解釋的問題,在這裏,OP期望通過將'datagrow'設置爲'img'的src來查看''因爲'.readAsDataURL()'異步返回結果,所以'onload'處理程序後面的console.log(image)'不會返回預期的結果。調整'console.log(image)'放置到回調以查看'FileReader'的'.result'。除了調整之外,你是對的,問題中的'js'將保持不變。 – guest271314

相關問題