1

我写了一个简单的while循环:

while($fetch = $stm->fetchAll()) {
    echo '<tr class=""'>;
    echo '<td>' . $fetch['name'] . '</td>';
    echo '</tr>';
}

我怎样才能让 class="" 每次交替,以便每隔一行是白色的,每隔一行是灰色的?我已经有了 CSS 类“greyRow”,但不知道如何在逻辑上使用它来使它们在 PHP 中交替出现。

我假设我需要一个 for 循环,但是如何将它用于我想要做的事情?

谢谢。

4

3 回答 3

2

一种简单的方法是实现一个变量来“计数”

$odd_row = 1;
while($fetch = $stm->fetchAll()) {
    if ($odd_row == 0) 
        echo '<tr>';
    else
        echo '<tr class="greyRow">';
    echo '<td>' . $fetch['name'] . '</td>';
    echo '</tr>';
    $odd_row = !$odd_row;
}

但是有更好的方法,严格使用 CSS。

对列表项使用 CSS :even 和 :odd 伪类

于 2013-10-13T03:02:15.593 回答
2

$counter % 2 == 0如果(或!($counter % 2))您在偶数行上,您可以使用计数器变量。否则很奇怪。

$counter = 1;
while($fetch = $stm->fetchAll()) {
    echo '<tr class="', (!($counter % 2) ? 'even' : 'odd'), '">';
    echo '<td>' . $fetch['name'] . '</td>';
    echo '</tr>';
    $counter++;
}

您也可以尝试使用nth-childCSS 选择器,完全避免在 PHP 中执行此操作。但是,它不是跨浏览器。如果您需要支持 IE < 8,则需要执行上述操作。

例子:

#your-table tr:nth-child(odd) {
   // style odd rows differently
}
于 2013-10-13T03:04:14.510 回答
1

这是我的方法:

while($fetch = $stm->fetchAll()) {

  if( !isset( $row_num ) ) $row_num = 1; // at first $row_num does not exist so create it and make uneven (start with 1)
  $row_class = (++$row_num % 2) ? 'even' : 'odd'; // then check whether $row_num is odd or even and assign it the corresponding class name

  echo '<tr class="'.$row_class.'">';
  echo '<td>' . $fetch['name'] . '</td>';
  echo '</tr>';
}
于 2013-10-13T03:13:22.110 回答