2015-10-22 2 views
0

Я не знаю, почему моя функция не возвращает данные.Моя функция не возвращает данные

loadingImages = function (id) 
{ 
    var totalImages = $(id+" img").length; 
    var imagesLoaded = 0; 
    var result = null; 

    $(id).find('img').each(function(elem) { 
     var fakeSrc = $(this).attr('src'); 

     $(this).attr("src", fakeSrc).load(function() { 

      imagesLoaded++; 

      if (imagesLoaded >= totalImages) { 
       result = true; 
      } else { 
       result = false; 
      } 
     console.log(result); 
     }); 

    }); 
    return result; 
} 


var $id = "#elem"; 
var rr = loadingImages($id); 
console.log(rr); 

Любая помощь будет оценена, это всего лишь личный учебный код, поэтому я не спешу.

ответ

0

.load не будет срабатывать немедленно, поэтому ваш результат всегда будет null. Вы должны изменить свой код, чтобы функция приняла обратный вызов:

loadingImages = function (id, cb) { 
    var totalImages = $(id+" img").length; 
    var imagesLoaded = 0; 
    var result = null; 

    $(id).find('img').each(function(elem) { 
     var fakeSrc = $(this).attr('src'); 

     $(this).attr("src", fakeSrc).load(function() { 
      imagesLoaded++; 

      if (imagesLoaded >= totalImages) { 
       result = true; 
       cb(result); 
      } 
     }); 

    }); 
} 


var $id = "#elem"; 
loadingImages($id, function(rr) { 
    console.log(rr); 
}); 
Смежные вопросы