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

标签 javascript jquery html

我的 HTML 代码中有一个像这样的 input 和 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);
 }

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

最佳答案

由于更改图像是异步操作,因此您还必须将 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]);
    }
}

关于javascript - 使用输入文件更改 img 标签的 src,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25709508/

相关文章:

jQuery - 如果为空,则将输入值设置为模糊时的先前值

jquery - 如何获取动态创建的元素(列表项)的索引?

html - CSS 到 php 表结果

html - 如何在 100% 高度图像下制作其他元素?

javascript - 如何使用 dojo dijit/form/DropDownButton 将子菜单项添加到菜单项?

javascript - jQuery attr 是否允许非标准?

javascript - Jquery 查找具有相同类的多个链接 href 并根据获取页面更改每个链接的名称

javascript - import Vue from 'vue' 将 "different"Vue 导入不同的文件

javascript - 按顺序存储 2 个数字

html - 底部 :0 not working when overflow-y appear