首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript循环行和列

Javascript循环行和列
EN

Stack Overflow用户
提问于 2010-11-29 05:35:46
回答 2查看 2.7K关注 0票数 0

好了,我有一个JSON文件,其中包含15个图像的urls。我想要实现的东西是这样的…

代码语言:javascript
复制
1-2-3
4-5-6
7-8-9
10-11-12
13-14-15

所以我有3列和5行图像。我知道我必须循环通过图像来获取它们,但是我如何将它们构建到行中,以便在每行中有3个图像。我使用的是简单的javascript,而不是jquery或任何其他框架。如果能帮上忙,我会很感激的。

EN

回答 2

Stack Overflow用户

发布于 2010-11-29 05:55:36

HTML:在重新阅读了问题和一些评论之后,我相信OP希望图像以HTML语言呈现,而不是简单地放在一个二维数组中。

给定以下HTML:

代码语言:javascript
复制
<div id="images_container"></div>

您可以使用包含图像数据的JSON数组,并执行以下操作:

代码语言:javascript
复制
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;
}

注意,' data‘可以用实际的数据替换。我为每个图像行分配了一个images-row类。使用这个CSS类,您可以将您想要的任何样式应用于每行和该行中的每个图像。

注意,这段代码假设图像的宽度和高度都是一样的。如果图像大小不同,逻辑不会被打破,但演示文稿看起来有点时髦(这就是CSS的用武之地)。

票数 4
EN

Stack Overflow用户

发布于 2010-11-29 05:38:42

我不能保证这会起作用(我现在很累),但像这样的东西应该会起作用:

代码语言:javascript
复制
// 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]]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4299220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档