ddimonn8080
@ddimonn8080

Почему переменная undefined?

Здравствуйте.
Есть проблемы с областью видимости.
Не могу понять почему переменная filesLength is undefined в функции addImage.
var dataArray = [],
		filesLength;


	// Функция загрузки изображений на предпросмотр
   function loadInView(files) {
      
      // Для каждого файла
		$.each(files, function(index, file) {
                  
         	// Создаем новый экземпляра FileReader
        	var fileReader = new FileReader();
            // Инициируем функцию FileReader
        	fileReader.onload = (function(file) {
               
				return function(e) {
					// Помещаем URI изображения в массив
					dataArray.push({name : file.name, value : this.result});
					var filesLength = files.length;
                                        console.log(filesLength); // здесь filesLength определена
					addImage((dataArray.length-1, filesLength));
					
				}; 
                  
        	})(files[index]);
			// Производим чтение картинки по URI
			fileReader.readAsDataURL(file);

		});
      	return false;
   }

   // Процедура добавления эскизов на страницу
	function addImage(ind, filesLength) {
		console.log(filesLength); // здесь filesLength is undefined
		if (filesLength == 1) {
			if (ind < 0 ) { 
				start = 0; end = dataArray.length; 
			} else {
				// иначе только определенное изображение 
				start = ind; end = ind+1;
			} 

			// Цикл для каждого элемента массива
			for (i = start; i < end; i++) {
				// размещаем загруженные изображения
				$('.partners__title').append('<div id="img-'+i+'" class="image" style="background: url('+dataArray[i].value+'); background-size: cover;"> <a href="#" id="drop-'+i+'" class="drop-button">Удалить изображение</a></div>'); 
			}
			return false;
		}
	}


В чём ошибка?

Заранее благодарен.
  • Вопрос задан
  • 204 просмотра
Решения вопроса 1
supervaleha
@supervaleha
Web-development
Странно немного - но можно покопаться. Меня немного смущают двойные скобки здесь:
addImage((dataArray.length-1, filesLength));

И скажи, что выведет в AddImage вот эотт лог:
console.log([ ind, filesLength ]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы