Как собрать JSON и выполнить его в функции?

Рейтинг: 0Ответов: 1Опубликовано: 14.11.2014

Имеется код:

$.fancybox.open([

{'href' : 'skin/default/test/1.jpg'}, 
{'href' : 'skin/default/test/2.jpg'}, 
{'href' : 'skin/default/test/3.jpg'}, 
{'href' : 'skin/default/test/4.jpg'}, 
{'href' : 'skin/default/test/5.jpg'}

],{
    openEffect  : 'elastic',
    closeEffect : 'elastic',
    tpl: {

    }
}
);

Хочу, чтобы адреса картинок собирались через другую функцию.
Сначала собираем массив:

adres=['skin/default/test/1.jpg', 'skin/default/test/2.jpg', 'skin/default/test/3.jpg']; var text=znak=""; for(i=0;i<=adres.length;i++){    text=text+znak+"{'href' : '"+adres[i]+"'}";    znak=", "; }

А далее вставить этот массив:

$.fancybox.open([

 eval(text);

 ],{    
 openEffect :'elastic',     
 closeEffect : 'elastic',
    tpl: {
} } );

Но eval(text); не работает. Пробовал просто текст выводить, не знаю, что не так делаю.

Ответы

▲ 2

Зачем так извращаться? В данном случае никакой eval не нужен, все гораздо проще:

var addresses = ['skin/default/test/1.jpg', 'skin/default/test/2.jpg', 'skin/default/test/3.jpg'];
var images = [];
addresses.forEach(function(address){
    images.push({'href' : address});
});
$.fancybox.open(images, {
            openEffect  : 'elastic',
            closeEffect : 'elastic',
            tpl: {

            }
        }
);