2013-10-13 43 views
1

我寫了一個簡單的while循環:While/For Loop交替CSS類?

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

我怎樣才能使課堂=「」交替,每次使每隔一行是白色的,每隔一行是灰色的?我已經有CSS類「greyRow」,但不知道如何在邏輯上使用它來使它們在PHP中交替。

我假設我需要一個for循環,但是我怎麼用它來做我想做的事情?

謝謝。

回答

0

這是我的方法:

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>'; 
} 
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。

Using CSS :even and :odd pseudo-classes with list items

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-child CSS選擇器,並避免在PHP中執行此操作。但是,它不是跨瀏覽器。如果您需要支持IE < 8,則需要執行上述操作。

實施例:

#your-table tr:nth-child(odd) { 
    // style odd rows differently 
}