每张桌子都有必要吗?

时间:2010-06-20 03:14:22

标签: xhtml w3c semantic-markup w3c-validation

是否有必要在每张桌子中加<tbody>?根据标准。

5 个答案:

答案 0 :(得分:39)

仅在您定义theadtfoot时。它主要在表具有多个内容体时使用。如果表中的数据很容易理解为tbody,那么您可以安全地省略它。

答案 1 :(得分:17)

对于仍在使用IE7的一小部分用户,如果您正在使用DOM方法构建表,则必须在tbody标记中添加封装tr!

这适用于所有主流浏览器:

var table = document.createElement('table');
var tbody = document.createElement('tbody');
var tr = document.createElement('tr');
tbody.appendChild(tr);
table.appendChild(tbody);

这在IE7中不起作用:

var table = document.createElement('table');
var tr = document.createElement('tr');
table.appendChild(tr);

我的一篇关于建筑桌子的快速博客文章:
http://blog.svidgen.com/2012/05/building-tables-in-ie7-with-javascript.html

值得注意的是,我不再努力在我自己的项目上支持IE7。此时,对于大多数站点,IE <= 7的份额可能可以忽略不计。

答案 2 :(得分:11)

引用HTML 4 spec:“除非表格只包含一个表格主体且没有桌面或脚部分,否则始终需要TBODY开始标记。可以始终安全地省略TBODY结束标记。”

因此,如果您有<tbody> <thead>

,则必须拥有<tfoot>代码

另请参阅:MDN

答案 3 :(得分:0)

愚蠢的家伙给了an answer for HTML4)。 Arwym给出an answer for HTML5 to a related question):

tabular data spec for HTML5 不需要它们:

可以使用此元素(tr)的上下文:

  • 作为thead元素的子元素。
  • 作为tbody元素的子元素。
  • 作为tfoot元素的子元素。
  • 作为table元素的子元素,在任何captioncolgroupthead元素之后,但仅当没有tbody 元素是表格元素的子元素

即使我认为对行进行分段也是一种好习惯 在theadtbodytfoot标记中,因为它使表格行 更容易识别。

最后,浏览器将始终为您添加至少tbody

答案 4 :(得分:-5)

大多数浏览器都是宽容的,但即使如此,我在我现在使用的所有表中都添加了这对。甚至是琐碎的表格。特别是现在我越来越多地使用CSS来装饰这些表。

所有这一切,我说旧桌子在最新的浏览器上仍能正常工作。我正在学习艰难的方法,但是在这里添加几个额外的Micro秒来添加可选标签,从长远来看,这样可以节省您的金钱/时间。

戴夫