从函数内的函数内输出变量

时间:2015-06-02 11:03:27

标签: jquery file

我遇到了一个我写过的脚本的问题。

我想使用errortrue输出变量false

我无法从“error”函数输出fileErrors变量。

任何人都可以查看下面的代码并告诉我是否存在明显的问题,为什么它不输出?

function file() {

    var error;

    if (window.File && window.FileList && window.FileReader) {

        if (!((type == 'jpg') || (type == 'jpeg'))) {

            $('#file-info').html('Wrong file type. JPG and JPEG only.').slideDown('slow');
            $('.upload-button').attr("disabled", true);
            error = true; 

        } else {

            var fileSize = $('.file_field input[type=file]')[0].files[0].size; 
            var maxFileSize = 8388608;

            var maxFileDimension = 1920;

            var fileWidth;
            var fileHeight;
            var url = window.URL || window.webkitURL;

                var fileField = $('.file_field input[type=file]')[0].files[0];
                    var image = new Image();
                    image.onload = function() {
                        fileWidth = this.width;
                        fileHeight = this.height;
                        fileErrors();   
                    };
                image.src = url.createObjectURL(fileField);

            function fileErrors() {

                if ( fileWidth > maxFileDimension || fileHeight > maxFileDimension ) {

                    $('#file-info').html('File dimensions exceed '+maxFileDimension+'px.').slideDown('slow');
                    $('.upload-button').attr("disabled", true);     
                    error = true;

                } else if ( fileSize > maxFileSize ) {

                    $('#file-info').html('File exceeding maximum file size.').slideDown('slow');
                    $('.upload-button').attr("disabled", true);
                    error = true;

                } else {

                    $('#file-info').slideUp();
                    $('.upload-button').attr("disabled", false);                    
                    error = false;

                }
            };

        }           

    } else {

        if (!((type == 'jpg') || (type == 'jpeg'))) {
            $('#file-info').html('Wrong file type. JPG and JPEG only.').slideDown('slow');
            $('.upload-button').attr("disabled", true);
            error = true;
        } else {
            $('#file-info').slideUp();
            $('.upload-button').attr("disabled", false);
            error = false;
        }   
    }

    console.log(error);

};                      

1 个答案:

答案 0 :(得分:0)

fileErrors函数未被调用。

当触发图像元素的onload事件时将调用它。但是,只要您没有将元素添加到 DOM 树,onload事件就不会被触发。

如果要调试正确设置的错误变量,可以像这样手动调用onload事件处理函数

 image.onload()