2010-02-12 110 views
2

如果我有一個表,它的列數創建表,期間不能確定,其行有時可能沒有包含足夠的數據來填充每一列,是有辦法有最後一個單元格每行自動大小?HTML表格 - 單元格跨越

我希望不必在每行的最後一個單元格上使用colspan,因爲當繪製表格時,最大列數是不可預測的。

例如:

----------------------------------- 
NEW ROW | FOO | BAR    | <- last cell should span the length of the table 
----------------------------------- 
NEW ROW | FOO | BAR | TEST | BLAH | <- no spanning needed, as it contains the most cols 
----------------------------------- 
NEW ROW | FOO | BAR | TEST   | <- last cell should span the length of the table 
----------------------------------- 
+0

在「理論」:HTTP://www.w3 .ORG/TR/HTML4 /結構/ tables.html#ADEF-列跨度設置colspan設爲「0」(適用於所有在COLGROUP) – scunliffe 2010-02-12 20:46:20

+1

你在做什麼,使得在表創建未確定列數?你正在編寫靜態HTML或使用AJAX或PHP或類似的東西操縱它?我可以想象,在表格繪製的時候,HTML表格中的列數是真正不確定的。 – 2010-02-12 20:54:15

+0

@dbingham: HTML由Windows應用程序生成,如果要運行大量數據以查找具有最多參數(轉換爲列)的數據集,然後運行該數據再次用於輸出目的。然而,這是無關緊要的,因爲如果列數是可確定的,我知道如何完成這個任務。我希望有一些表格功能可以解釋不適用的情況。 – Brandon 2010-02-12 20:58:13

回答

1

您可以創建一個單獨的表的每一行,並使用CSS來設置列寬來控制佈局。在這種情況下,最後一個單元格的寬度將設置爲「自動」

或者,如果您知道可能具有的最大列數(或選擇的數字超過您將要呈現的列數) ,您可以將最後一個單元格上的colspan設置爲等於該數量減去爲該行生成的單元格數量。

例如,如果你選擇100,你永遠不會有細胞的最大數量,你上面的代碼應該是這樣......

<TABLE border="1"> 
    <TR><TD>NEW ROW</TD><TD>FOO</TD><TD COLSPAN="97">BAR</TD></TR> 
    <TR><TD>NEW ROW</TD><TD>FOO</TD><TD>BAR</TD><TD>TEST</TD><TD COLSPAN="95">BLAH</TD></TR> 
    <TR><TD>NEW ROW</TD><TD>FOO</TD><TD>BAR</TD><TD COLSPAN="96">TEST</TD></TR> 
</TABLE> 
0

如果你正在處理DB的記錄,可能是空的或什麼的,這個僞會讓你開始:

foreach ($query as $row) { 
    $max_elements = 5; //per your example 
    $number_of_elements = count($row); 
    $colspan = $max_elements - $number_of_elements; 
    $i = 0; 
    while ($i <= $number_of_elements-2) { 
     echo "<td>".$row['$i']."</td>"; 
     $i++; 
    } 
    echo "<td colspan='$colspan'>".$row['$number_of_elements-1']."</td>"; 
} 

在這個未經測試/驗證的PHP,前提是要計算每行的項目數量,並知道剩下多少項目(基於最大數量,如您的示例中的5)。然後從查詢中回顯每個項目,並在最後一個項目中添加動態生成的colspan#。

將調試作爲練習留給讀者。