for循环关闭父div

时间:2014-09-06 21:02:58

标签: php html for-loop

我有一个插入HTML的PHP​​ for循环。这是代码:

<div class="half-col full" align="left" data="evts">
    <?php

        for($i = 0; $i < count($evts); $i++) :

    ?>

    <li class="<?php echo ($i==0)?"selected":"";?>">
        <div class="date">
            <li class="cell">
                <span><?=$evts[$i]["month1"]?></span>
                <?=$evts[$i]["day1"]?>
            </li>
            <li class="divider"></li>
            <li class="cell">
                <span><?=$evts[$i]["month2"]?></span>
                <?=$evts[$i]["day2"]?>
            </li>
        </div>
    </li>

    <?php

        endfor;

    ?>
</div>

问题是此循环插入3 <li>s,但在插入第一个<li>后,父<div>已关闭,因此源最终看起来像这样:

<div>
    <li> <!--Inserted-->
</div>
<li> <!--Inserted-->
<li> <!--Inserted-->

在插入所有3个<div>之前,有没有办法阻止父<li>s关闭?

5 个答案:

答案 0 :(得分:3)

<li>必须位于<ul><ol><menu>内。见https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li

比较输出源代码和网站的DOM。奇怪的结果应该是由浏览器尝试修复损坏的源代码引起的。

答案 1 :(得分:1)

尝试以下方法:

<div class="half-col full" align="left" data="evts">
  <ul>
    <?php

        for($i = 0; $i < count($evts); $i++) :

    ?>
    <li class="<?php echo ($i==0)?"selected":"";?>">
      <div class="date">
        <ul>
          <li class="cell"> <span>
            <?=$evts[$i]["month1"]?>
            </span>
            <?=$evts[$i]["day1"]?>
          </li>
          <li class="divider"></li>
          <li class="cell"> <span>
            <?=$evts[$i]["month2"]?>
            </span>
            <?=$evts[$i]["day2"]?>
          </li>
        </ul>
      </div>
    </li>
    <?php

        endfor;

    ?>
  </ul>
</div>

答案 2 :(得分:0)

也许你应该将你的第二个div标签放在li标签之外

<div class="half-col full" align="left" data="evts">
<?php
    for($i = 0; $i < count($evts); $i++) :
?>
<div class="date">
    <li class="<?php echo ($i==0)?"selected":"";?>">
        <li class="cell">
            <span><?=$evts[$i]["month1"]?></span>
            <?=$evts[$i]["day1"]?>
        </li>
        <li class="divider"></li>
        <li class="cell">
            <span><?=$evts[$i]["month2"]?></span>
            <?=$evts[$i]["day2"]?>
        </li>
    </li>
</div>

<?php
    endfor;
?>

答案 3 :(得分:0)

问题只是由于<li>之类的html标签管理不当而没有必要的标签。它可能会导致许多问题,首先解决这些问题。循环中没有任何问题,只有html标签。

答案 4 :(得分:-1)

          </li>
    </div>
</li>

<?php

    endfor;`

你的</div>在循环中。将结束标记移到循环之外,问题就解决了:)``