用输入文件更改img标签的src

时间:2014-09-07 11:04:11

标签: javascript jquery html

我的HTML代码中有一个像这样的输入和img标记:

<input type="file" name="img2" id="chooseimg" onchange="readURL(this);">

<img id="img-edt" src="l1.png" alt="your image" width="502" height="319"/>

在js中,我使用此代码更改图像:

function readURL(input) {
 if (input.files && input.files[0]) {
     var reader = new FileReader();
     reader.onload = function(e) {
         $('#img-edt')
             .attr('src', e.target.result)
             .width(502)
             .height(319);
     };
     reader.readAsDataURL(input.files[0]);
 }
 showDimension();
 }

在图像加载后,我需要知道原始图像的尺寸,所以我使用这个函数:

function showDimension() {
 var mm = document.getElementById("img-edt");
 var ww = mm.naturalWidth;
 var hh = mm.naturalHeight;
 var x = document.getElementById("teeest");
 x.innerHTML = "w is: " + String(ww) + "h is: " + String(hh);
 }

但问题是它始终返回上一张图像的大小。请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

由于更改图像是异步操作,因此您必须将showDimension()函数移动到onload回调中:

function readURL(input) {
    if (input.files && input.files[0]) {
        var reader = new FileReader();
        reader.onload = function (e) {
            $('#img-edt')
                .attr('src', e.target.result)
                .width(502)
                .height(319);
            showDimension();
        };
        reader.readAsDataURL(input.files[0]);
    }
}