jQuery变量没有被更新

时间:2013-06-13 14:49:53

标签: javascript jquery html5

我正在使用HTML5文件API来获取图片的宽度。

它正常工作,console.log正在输出正确的数量。

我需要将值保存到变量fileWidth,以便我可以在函数外部访问它。我在函数外部创建了一个空变量,并期望使用函数内部的alue进行更新,但无论我尝试什么都失败。

这是我的代码:

var fileWidth;
var reader = new FileReader;
reader.onload = function() {
    var img = new Image;
    img.onload = function() {
        fileWidth = img.width;
        console.log(fileWidth);
    };
    img.src = reader.result;
};

reader.readAsDataURL($('#submission-file')[0].files[0]);

任何人都可以看到为什么变量没有被更新?

编辑代码:

var fileWidth;
var reader = new FileReader;
reader.onload = function() {
    var img = new Image;
    img.src = reader.result;
};
reader.onloadend = function() {
    fileWidth = img.width;  
};

reader.readAsDataURL($('#submission-file')[0].files[0]);

console.log(fileWidth);

1 个答案:

答案 0 :(得分:1)

您在异步回调中设置fileWidth,此方法无法保证在您访问变量之前执行。

提示

尝试在访问变量之前在回调和警报中添加警报。查看首先显示的警报。