2015-06-02 30 views
0

我遇到了我寫的腳本的問題。從功能中的函數內輸出變量

我想輸出變量errortruefalse

我無法獲得從'fileErrors'函數輸出的error變量。

任何人都可以看看下面的代碼,並告訴我,爲什麼它不輸出明顯的問題?

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

};      
+0

等什麼你從日誌中得到些什麼? – dsharew

回答

0

fileErrors函數沒有被調用。


它將在圖像元素的onload事件被觸發時調用。但只要您沒有將該元素添加到您的DOM樹上,onload事件就不會被解僱。

如果你想調試錯誤變量被正確設定,您可以手動調用這樣onload事件處理函數:

image.onload() 
+0

謝謝德根。雖然我不確定我是否遵守。你說onload事件沒有被解僱。我將如何確保它是? – ccdavies

+0

用於什麼圖像?如果你不把它添加到你的DOM爲什麼你創建它? – dsharew

+0

我只是想檢查它的大小。 – ccdavies