2016-02-29 58 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' 
    }] 
}); 

这个id变量始终是相同的,但我想循环使用一个数字,例如我从变量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'之前创建'objects'的'array',然后传递持有'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) 
});