【问题标题】:Unclosed div when wrapping every 2 divs in a loop将每2个div包装在一个循环中时未关闭的div
【发布时间】:2015-04-16 14:10:00
【问题描述】:

我在下面进行了以下设置。我正在尝试将 2 个 div 包装在一个“行”中。

当它是偶数时它工作得很好,但是当有一个奇数时,我以一个开放的 div 结束并得到 html 错误。任何关于如何更好地确保有一个关闭 div 的想法将不胜感激

<?php

            $args = array(            
              'post_type' => 'portfolio-project',
              'posts_per_page' => -1, 
              'orderby' => 'menu_order',
              'order' => 'ASC'
            );

            $query = query_posts($args);

        ?>

        <?php $i=1; ?>

        <?php while (have_posts()) : the_post(); ?>
            <?php if($i==1 || $i%2==1) echo '<div class="row">' ;?>

            <div class="col-sm-6">
                <?php the_title();?>
            </div>

            <?php if($i%2==0) echo '</div>' ; ?>

        <?php $i++; endwhile; wp_reset_query();?>

【问题讨论】:

  • 你正在检查一个条件来打开 div 不同的条件来关闭 div 然后它将如何正确关闭
  • ' ; ?> 在 endwhile 之后重复这一行;我认为它会解决您的问题。
  • @ManishShukla 您应该作为答案发布,与您的相比,下面的其他答案既不清晰也不干净。
  • @MikeThomson 检查我的答案
  • @ManishShukla 查看我对您的回答的评论。

标签: php html wordpress


【解决方案1】:

如果需要,您必须放置和结束关闭标记。我将计数方法更改为更清晰。

    <?php $i=1;  while (have_posts()) : the_post(); ?>
        <?php if($i==1) echo '<div class="row">' ;?>

        <div class="col-sm-6">
            <?php the_title();?>
        </div>

        <?php if($i==2) echo '</div>' ; ?>

    <?php $i++; if($i>2)$i=1;endwhile; wp_reset_query();if($i==2) echo '</div>' ;?>

【讨论】:

    【解决方案2】:

    试试这个

    <?php $i = 2; ?>
    
    <?php while (have_posts()) : the_post(); ?>
        <?php if ($i == 2 || $i % 2 == 0) echo '<div class="row">'; ?>
    
        <div class="col-sm-6">
            <?php the_title(); ?>
        </div>
    
        <?php if ($i == 2 || $i % 2 == 0) echo '</div>'; ?>
    
        <?php $i++;
    endwhile;
    wp_reset_query(); ?>
    

    【讨论】:

      【解决方案3】:

      试试

      <?php $i++; endwhile; if($i%2==1) echo '</div>' ; wp_reset_query();?>
      

      代替

      <?php $i++; endwhile; wp_reset_query();?>
      

      【讨论】:

      • 这将是正确的,但您需要将其更改回检查 $i%2==0,就像您原来的评论一样(这是因为有一个 $i++ 发生在该条件失败后的while循环,但现在将通过)。对吗?
      【解决方案4】:

      保留打开的 div 的数量

      改变这个

      <?php if($i==1 || $i%2==1) echo '<div class="row">';?>
      

      <?php if($i==1 || $i%2==1){ echo '<div class="row">'; $count = 1;} ?>
      

      并在关闭 div 时检查 count==1

      <?php if($count==1){ echo '</div>' ; $count=0; } ?>
      

      【讨论】:

        猜你喜欢
        • 2012-10-27
        • 2014-01-22
        • 2011-03-22
        • 2013-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        相关资源
        最近更新 更多