Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с JS кодом СПС. (https://javascript.ru/forum/misc/29692-pomogite-s-js-kodom-sps.html)

hilton_413@mill.ru 07.07.2012 15:37

Помогите с JS кодом СПС.
 
Привет Всем !
Задача такая получаю от PHP Json

такого вида:
["photos\/small_14.jpg","photos\/small_6.jpg","photos\/small_7.jpg"]


Хочу сделать постепенную загрузку ВСЕХ изображений с пелоадером...
но он выводит только одну картинку.
Как исправить ????? Спасибо

<div id="miniatures"></div>

$(document).ready(function(){

    var imgObj = new Image();
    var i = 0;
    
//Рисую <div> в коротом background прелоадера
    function loadImages(imgsJsonArr){        
         if (imgsJsonArr[i] != undefined ) {                
                $("#miniatures").append($("<div class = loader>"));
                //загружаю изображени
                viewLoadedImage(imgObj, imgsJsonArr); 
         }else{
            //alert("STOP");
         }
    }
    //загрузка и вывод изобрж
    function viewLoadedImage(imgObj, imgsJsonArr){
            $(imgObj).load(function () {
                    $(this).hide();
                    $('.loader').append(this);
                    $(this).fadeIn();
                    
                }).error(function(){        
                    //$(this).attr("src","error.png");
                    }).attr('src', imgsJsonArr[i]);
             
 //Если выключить выведет только одно изобржение как надо!!!  
             loadImages(imgsJsonArr, i++)  

    }
    


 
$.ajax({
    type: "GET",
    url: "ajax.php",
    success: function(data){
        var imgsJsonArr = JSON.parse(data);
        //var imgsCountLength = imgsJsonArr.length;        
        loadImages(imgsJsonArr);
    }


});
});

Deff 07.07.2012 15:56

вместо loadImages(imgsJsonArr, i++)

i++;
loadImages(imgsJsonArr[i]);

vadim5june 07.07.2012 15:57

imgObj-должен быть массивом
var imgObj =[];
и для всех i
imgObj[i] = new Image();

Deff 07.07.2012 16:09

Цитата:

Сообщение от vadim5june
imgObj-должен быть массивом

i++
loadImages(imgsJsonArr)

hilton_413@mill.ru 07.07.2012 16:28

Делай не делай imgObj массивлм не работает, выводит только прелоадеры.
а вот что показывает firebug

<div id="miniatures">
    <div class="loader">
        <img src="photos/small_14.jpg" style="display: none;">
        <img src="photos/small_14.jpg" style="display: none; opacity: 0;">
    </div>
    <div class="loader">
        <img src="photos/small_14.jpg" style="display: none; opacity: 0;">
        <img src="photos/small_14.jpg" style="display: none; opacity: 0;">
    </div>
</div>



var imgObj = new Image();
var i = 0;
function loadImages(imgsJsonArr){
         
         if (imgsJsonArr[i] != undefined ) {                
                $("#miniatures").append($("<div class = 'loader'>"));
                viewLoadedImage(imgObj, imgsJsonArr); 
         }else{}
    }
    
    function viewLoadedImage(imgObj, imgsJsonArr){
            $(imgObj,i).load(function () {
                
                    $(this).hide();
                    $('.loader').append(this);
                    $(this).fadeIn();
                }).error(function () {        
                    //$(this).attr("src","imgs/loading.gif");  // WORCK        
                    }).attr('src', imgsJsonArr[i]);                                    
                    
                    var imgObj = [];                    
                    imgObj[i] = new Image();
                    
                    i++;
                    loadImages(imgsJsonArr)
    }

Deff 07.07.2012 16:42

hilton_413@mill.ru,
Гы Вы меняете текст на ходу - естественно фигня!
в посте 1 = $(imgObj).load(function () {
сейчас уже
$(imgObj,i).load(function () {
тады нун ставить Вашу запись в конце
loadImages(imgsJsonArr, i++)


Часовой пояс GMT +3, время: 18:37.