Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.07.2012, 15:37
Новичок на форуме
Отправить личное сообщение для hilton_413@mill.ru Посмотреть профиль Найти все сообщения от hilton_413@mill.ru
 
Регистрация: 23.09.2010
Сообщений: 5

Помогите с 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);
    }


});
});
Ответить с цитированием
  #2 (permalink)  
Старый 07.07.2012, 15:56
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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

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

Последний раз редактировалось Deff, 07.07.2012 в 15:58.
Ответить с цитированием
  #3 (permalink)  
Старый 07.07.2012, 15:57
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

imgObj-должен быть массивом
var imgObj =[];
и для всех i
imgObj[i] = new Image();
Ответить с цитированием
  #4 (permalink)  
Старый 07.07.2012, 16:09
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от vadim5june
imgObj-должен быть массивом
i++
loadImages(imgsJsonArr)
Ответить с цитированием
  #5 (permalink)  
Старый 07.07.2012, 16:28
Новичок на форуме
Отправить личное сообщение для hilton_413@mill.ru Посмотреть профиль Найти все сообщения от hilton_413@mill.ru
 
Регистрация: 23.09.2010
Сообщений: 5

Делай не делай 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)
    }
Ответить с цитированием
  #6 (permalink)  
Старый 07.07.2012, 16:42
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите расшифровать JS pavdin Общие вопросы Javascript 24 01.04.2017 20:37
Помогите с небольшим эффектом на JS. При наведении курсора.. bayanruby Элементы интерфейса 10 27.05.2012 02:44
Помогите с JS кодом для телефона Ali6 Мобильный JavaScript 1 28.04.2011 17:46
помогите задать переменную в js bsgroupua Общие вопросы Javascript 3 01.02.2010 18:28
помогите написать аналог строки include("index.php?open=1") на js bushstas Общие вопросы Javascript 1 19.07.2009 02:48