2016-02-29 3 views
0

Я использую lightGallery и я использую динамическое создание галерей, это код, чтобы генерировать только одно изображение:Для цикла внутри объекта Javascript

$(this).lightGallery({ 
    dynamic:true, 
    dynamicEl: [{ 
     'src':'css/images/pictures/gal_'+id+'/1.jpg', 
     'thumb':'css/images/thumbnails/gal_'+id+'/1.jpg' 
    }] 
}); 

Эта переменная идентификатор всегда одинакова, но я хотите перебрать число, которое я беру, например, из переменной x. Таким образом, если x=4 сгенерированный код будет выглядеть следующим образом:

$(this).lightGallery({ 
    dynamic:true, 
    dynamicEl: [{ 
     'src':'css/images/pictures/gal_'+id+'/1.jpg', //here's 1 
     'thumb':'css/images/thumbnails/gal_'+id+'/1.jpg' 
    },{ 
     'src':'css/images/pictures/gal_'+id+'/2.jpg', //here's 2 and so on 
     'thumb':'css/images/thumbnails/gal_'+id+'/2.jpg' 
    },{ 
     'src':'css/images/pictures/gal_'+id+'/3.jpg', 
     'thumb':'css/images/thumbnails/gal_'+id+'/3.jpg' 
    },{ 
     'src':'css/images/pictures/gal_'+id+'/4.jpg', 
     'thumb':'css/images/thumbnails/gal_'+id+'/4.jpg' 
    }] 
}); 

Так что я думаю, вопрос заключается в том, чтобы включать в себя цикл внутри объекта, если это вообще возможно, заранее спасибо!

+0

Извините, если это вопрос новичка, я не так хорошо с JQuery и JavaScript: ( –

+2

Создайте 'массив'' объектов' перед инициализацией 'lightGallery', а затем передайте переменную, содержащую' array' – Rayon

ответ

0

Нет. В определении объекта невозможно иметь структуры управления (например, петли). Вам нужно создать массив изображений первых, как это:

var dynamicEl = []; 
for (var i = 1; i <= 4; i++) { 
    dynamicEl.push({ 
    'src':'css/images/pictures/gal_' + id + '/'+ i + '.jpg', 
    'thumb':'css/images/thumbnails/gal_' + id + '/' + i + '.jpg' 
    }); 
} 

А затем передать его на определение объекта:

$(this).lightGallery({ 
    dynamic:true, 
    dynamicEl: dynamicEl 
}); 
+0

Как ответ выше, это сработало, спасибо! –

+0

Но измените '4.jpg' на' '+ i +'. Jpg' –

+0

Да, вы правы. Благодарю. – nstoitsev

0

Попробуйте

var genEls = function(id, count) 
{ 
    var els = []; 
    for(i = 1; i <= count; i++) 
    { 
     els.push({ 
      'src':'css/images/pictures/gal_'+ id + '/' + i + '.jpg', 
      'thumb':'css/images/thumbnails/gal_' + id + '/' + i + '.jpg', 
     }); 
    } 
return els; 
} 

var id = 3; 
var count = 4; 
$(this).lightGallery({ 
    dynamic:true, 
    dynamicEl: genEls(id,count); 
}); 

Это, как инлайн как он может получить;)

Надеюсь, что это поможет ...

+1

Спасибо, это сработало! –

+0

Я обновил свой ответ, чтобы быть более управляемым! Пожалуйста, отметьте это как ответ, так как другие могут легко определить, что сработало для вас! Следите за хорошей работой и будьте здоровы! –

+0

Действительно! Отметив это, как только смогу, еще раз спасибо! –

0

первым создать метод, чтобы динамически генерировать большие пальцы

function genThumbs(count, id) 
{ 
    var arr = []; 
    for (var counter = 1; counter <= count; counter++) 
    { 
     arr.push({ 
     'src':'css/images/pictures/gal_'+id+'/' + counter + '.jpg', 
     'thumb':'css/images/thumbnails/gal_'+id+'/' + counter + '.jpg' 
     }); 
    } 
    return arr; 
} 

затем использовать то же самое время вызова галереи

$(this).lightGallery({ 
    dynamic:true, 
    dynamicEl: genThumbs(5, id) 
});