2015-06-02 6 views
0

У меня возникла проблема со сценарием, который я написал.Вывод переменной из функции внутри функции

Я хотел бы вывести переменную error либо true, либо 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); 

};      
+0

так, что вы получаете из журнала? – dsharew

ответ

0

Функция fileErrors не вызвана.


Он будет называться, когда onload событие элемента изображения обжигают. Но событие onload не запускается, пока вы не добавили элемент на свое DOM.

Если вы хотите отладить переменную ошибку правильно установить время, вы можете вручную вызвать функцию-обработчик события onload как это:

image.onload() 
+0

Спасибо, Деген. Хотя я не уверен, что следую. Вы говорите, что событие onload не срабатывает. Как я могу это гарантировать? – ccdavies

+0

Какое изображение используется? если вы не добавляете его в ur DOM, почему вы его создаете? – dsharew

+0

Я просто хочу проверить его размер. – ccdavies

Смежные вопросы