2011-05-03 75 views
8

難道一個錶行(<tr>)必須在表體(<tbody>),如果表中有一個表體,也可以存在於表體的外面?難道一個<tr>必須是內<tbody>

<table> 
    <tr> 
     <td colspan='2'>...</td> 
    </tr> 

    <tbody> 
     <tr> 
     <td>...</td> 
     <td>...</td> 
     </tr> 
    </tbody> 

    <tr> 
     <td colspan='2'>...</td> 
    </tr> 

    <tbody> 
     <tr> 
     <td>...</td> 
     <td>...</td> 
     </tr> 
    </tbody> 

</table> 
+1

你試過上面的代碼? http://jsfiddle.net/wQpfb/ – Dutchie432 2011-05-03 16:55:30

+0

上面的代碼工作,我想知道,如果它是有效的,根據w3 – superUntitled 2011-05-03 16:56:32

+1

http://validator.w3。org/ – Dutchie432 2011-05-03 17:01:40

回答

5

沒有,<tr>可以在<thead><tbody><tfoot>也不必在任何人。

+6

雖然它可以是任何'thead','tbody'或'tfoot'元素,如果'tr'直接在'table'中找到,瀏覽器將*添加一個'tbody'來包含'tr's。所以,它有點* *。 – 2011-05-03 16:58:13

+0

將添加的''顯示在所呈現的html中,還是動態地完成某些操作而不改變代碼? – 2011-05-03 17:06:49

+0

在Chromium(Ubuntu 11.04)中,動態添加了一個「tbody」元素(在Web Inspector中可見,但在框架的源中不可見)。演示[在JS小提琴](http://jsfiddle.net/davidThomas/UMMVS/)。 – 2011-05-03 17:13:37

1

<tbody>用來標記您的<table>的身體,如果你的表中包含<thead>(表頭)。 。或<tfoot>(表尾)元素如果您的表不包含這些元素,你可以自由地不使用<tbody>

正確用法是:

<table> 
<thead><tr><th>Item   </th><th>Cost </th></tr></thead> 
<tbody><tr><td>Stack Overflow</td><td>Free </td></tr> 
     <tr><td>Something cool</td><td>$1.00</td></tr></tbody> 
</table> 

HTML4 specification to tables

1

如果你有<tr><tbody>的,該網頁將無法驗證: http://validator.w3.org

正如其他人指出,<tbody>是可選的,除非你使用<thead><tfoot>。使用後兩個元素的主要原因是,如果打印一張長桌子,頁眉和頁腳會在每個頁面上重複。

這聽起來像你可能會創建類似日曆的東西,你想要交替行<th>(例如,日期)和<td>(例如,該日期的事件)。如果是這樣的話,你不應該在<thead><tbody>中包裹交替行 - 這樣做會在打印頁面時混淆瀏覽器。如果你只留下分組元素,你的表格將被驗證。但是,某些屏幕閱讀器可能會被該標記混淆,並將最上面的一行標題應用於它們下面的所有單元格。對於像這樣的複雜表格,您需要添加額外的標記以確保屏幕閱讀器瞭解表格的組織方式。下面是與訪問標記你的表:

<table summary="A brief description of how the table is organized, for screen reader users"> 
    <tr> 
    <th colspan='2' id="header1">...</th> 
    </tr> 
    <tr> 
    <td headers="header1">...</td> 
    <td headers="header1">...</td> 
    </tr> 
    <tr> 
    <th colspan='2' id="header2">...</th> 
    </tr> 
    <tr> 
    <td headers="header2">...</td> 
    <td headers="header2">...</td> 
    </tr> 
</table> 

或者,你可能要考慮數據是否可以在多個表組織,或者如果可以提供另一種版本,這將是更容易地使用屏幕閱讀器的用戶。例如,事件日曆可以另外呈現爲事件列表。

6

相反的是特里爾湯姆森表示,與<thead><tfoot><tbody>標籤之外,但在<table>標籤內<tr>標籤表將驗證對W3C Markup Validation Service

該文件被成功選中爲HTML 4.01過渡:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html lang="en"> 
    <head> 
    </head> 
    <body> 
    <table> 
     <thead> 
     <th colspan="2">head1</th> 
     <th>head2</th> 
     </thead> 
     <tfoot> 
     <th colspan="2">foot1</th> 
     <th>foot2</th> 
     </tfoot> 

     <tr><td colspan="3">this row is outside of thead and tfoot</td></tr> 

     <tbody> 
     <tr> 
      <td>1-1</td> 
      <td>1-2</td> 
      <td>1-3</td> 
     </tr> 
     <tr> 
      <td>2-1</td> 
      <td>2-2</td> 
      <td>3-3</td> 
     </tr> 
     <tr> 
      <td>3-1</td> 
      <td>3-2</td> 
      <td>3-3</td> 
     </tr> 
     </tbody> 
    </body> 
</html> 
相關問題