0

我有一个 for 循环,它循环多个图像并将它们显示为 Web 项目中用户控件的一部分。

我需要能够在一个 div 中显示两个图像,然后是 1 个图像,然后是两个图像等。

我有以下代码将两个图像放在一个 div 中,但还没有设法找出如何在 1 和 2 之间交替?

StringBuilder sb = new StringBuilder();
StringBuilder sbMain = new StringBuilder();

for (int i = 0; i < FADS.Count; i++)
{
    if(i % 2 == 0)
    sb.Append("<div class=\"featrow\">");

    FeatAdv fad = FADS[i];
    sb.AppendFormat("<a href=\"{0}\" target='BannerPage' title=\"{1}\">", params);
    sb.AppendFormat("<img src='{0}'/></a>", ImagePath.FromLocal(imagelocation));

    if (i % 2 != 0)
    {
        sb.Append("</div>");
        sbMain.Append(sb);
        sb = new StringBuilder();
    }
}
4

3 回答 3

1

您可以通过更改很少的代码来做到这一点。

目前,您正在打开div每个偶数编号图像之前

if(i % 2 == 0)
    sb.Append("<div class=\"featrow\">");

并在每个奇数图像后关闭

if (i % 2 != 0) // equivalently i % 2 == 1
{
    sb.Append("</div>");
    sbMain.Append(sb);
    sb = new StringBuilder();
}

如果您想要三个简单组中的图像,您可以将条件替换为

if (i % 3 == 0)

if (i % 3 == 2)

分别。

但是您还想在第三个div元素之前打开一个并在第二个元素之后关闭一个,因此您可以将条件替换为

if ((i % 3 == 0) || (i % 3 == 2))

if ((i % 3 == 1) || (i % 3 == 2))

分别。

请注意,与您的原始代码一样,您需要在循环之后检查以确保您没有打开 adiv并关闭它 - 如果您的图像数量多于三的倍数,则会发生这种情况。(在您的原始代码中,一个大于二的倍数。)

于 2014-07-31T12:34:39.537 回答
0

基本上你想循环遍历你的数组,一次选择 3 个元素。我已经写了这个但无法测试,因为我没有你的所有数据:

StringBuilder sb = new StringBuilder();
StringBuilder sbMain = new StringBuilder();

for (int i = 0; i < FADS.Count; i+=3)
{
    sb.Append("<div class=\"featrow\">");


    for(int j =i ; j<=i+2 ;j++){

        if(j < FADS.Count){

            if(j==i+2){
                sb.Append("</div>");
                sb.Append("<div class=\"featrow\">");
            }
            FeatAdv fad = FADS[j];
            sb.AppendFormat("<a href=\"{0}\" target='BannerPage' title=\"{1}\">", params);
            sb.AppendFormat("<img src='{0}'/></a>", ImagePath.FromLocal(imagelocation));

            if(j==i+2){
                sb.Append("</div>");
            }
        }
    }

    sbMain.Append(sb);
    sb = new StringBuilder();
}
于 2014-07-31T12:16:26.890 回答
-3

这是在 jQuery 中,但可以帮助您:

<div class="test"></div>
$(document).ready(function(){
var count=10;
    for(var i=0;i<count;i++) {
    var html='<div class="inner">';
        html +='<a href="#">Image 1</a>'
        if(i%2==0) {
           html +='<a href="#">Image 2</a>'
        }
        html +="</div>";
        $('.test').append(html);
    }

});

JSFIDDLE

于 2014-07-31T12:25:11.890 回答