好吧,所以我有一个JSON文件的15个图像在其中的网址。我试图实现的是这样的...Javascript循环行和列
1-2-3
4-5-6
7-8-9
10-11-12
13-14-15
这样我有3列和5行图像。我知道我必须通过图像循环来获取它们,但我如何将它们构建成行,以便每行有3个图像。我使用简单的JavaScript而不是jQuery或任何其他框架。帮助将非常感激。
好吧,所以我有一个JSON文件的15个图像在其中的网址。我试图实现的是这样的...Javascript循环行和列
1-2-3
4-5-6
7-8-9
10-11-12
13-14-15
这样我有3列和5行图像。我知道我必须通过图像循环来获取它们,但我如何将它们构建成行,以便每行有3个图像。我使用简单的JavaScript而不是jQuery或任何其他框架。帮助将非常感激。
我不保证这会工作(我累了现在),但这样的事情应该做的伎俩:
// let's say that arr == [0,1,2,3,4,5,6,7,8]
result = []
for(i=0; i<=arr.length-step; i+=step)
{
row = []
for(j=i; j<i+step && j<arr.length; i++)
row.push(arr[j]); // or arr[j].image_url or whatever you need
result.push(row);
}
// result is now something like [[0,1,2],[3,4,5],[6,7,8]]
编辑:后重新阅读的问题和一些评论,我相信OP希望图像呈现在HTML中,而不是简单地放置在一个二维数组。
考虑下面的HTML:
<div id="images_container"></div>
你可以把一个JSON阵列图像数据,做这样的事情:
var data = [
'http://farm4.static.flickr.com/3594/3498411074_f10d546f42_t.jpg',
'http://farm4.static.flickr.com/3364/3498396436_44bcdcc06f_t.jpg',
'http://farm4.static.flickr.com/3436/3356022463_cd53a9b57d_t.jpg',
'http://farm4.static.flickr.com/3422/3356840596_57f5da7842_t.jpg',
'http://farm4.static.flickr.com/3180/2776515140_b7cd27cf7e_t.jpg',
'http://farm4.static.flickr.com/3273/2758309734_48cfe16860_t.jpg',
'http://farm4.static.flickr.com/3156/2758267414_6320ce7bdd_t.jpg'];
var images = document.createElement("div");
images.setAttribute("id", "images");
var img;
for(var index = 0; index < data.length; index++) {
// If three images have been placed on a row,
// create a new row.
if (index % 3 === 0) {
row = document.createElement("div");
row.setAttribute("class", "images-row");
images.appendChild(row);
}
// replace 'data[index]' with the url of the image in each member of the array.
img = createImageElement(data[index]);
row.appendChild(img);
}
images.appendChild(row);
document.getElementById("images_container").appendChild(images);
// Creates an image element with the given url.
function createImageElement(url) {
img = document.createElement("img");
img.setAttribute("src", url);
img.setAttribute("alt", "image");
return img;
}
注意该“数据”可以与实际被替换数据。我已给每个图像行一个images-row
类。使用这个CSS类,您可以将所需的任何样式应用于每行和每行中的图像。
还请注意这种代码假设图像的宽度和高度相同。如果图像大小不同,逻辑将不会中断,但演示文稿看起来有点时髦(这是CSS可以进入的地方)。
通过'JSON文件'你是指一个JSON数组还是一个JSON对象?你可以添加一个JSON样本吗? – 2010-11-28 21:39:20
对不起,它的JSON数组内有很多对象 – ChrisMJ 2010-11-28 21:41:41
您是否尝试创建具有三列和五行的表,然后附加到文档中,或者在数组中有这个? – 2010-11-28 22:08:51