46

有必要<tbody>在每张桌子上都有吗?根据标准。

4

6 回答 6

53

仅当您定义thead和时tfoot。它主要用于表格具有多个内容主体的情况。如果表中的数据很容易理解为,tbody那么您可以放心地省略它。

于 2010-06-20T03:15:27.547 回答
19

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

这将适用于所有主要浏览器:

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 的份额可能可以忽略不计。

于 2012-05-16T16:14:14.590 回答
18

引用HTML 4 规范:“TBODY 开始标记始终是必需的,除非表格仅包含一个表格主体且没有表格头部或底部部分。TBODY 结束标记始终可以安全地省略。”

所以,<tbody>如果你有一个<thead> <tfoot>

另请参阅:MDN

于 2010-06-20T03:27:04.597 回答
0

Dumb Guy 给出了 HTML4 的答案)。Arwym为 HTML5 提供了一个相关问题的答案):

HTML5的表格数据规范 不需要它们:

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

  • 作为元素的子thead元素。
  • 作为元素的子tbody元素。
  • 作为元素的子tfoot元素。
  • 作为元素的子table元素,在任何caption、、colgroupthead元素之后,但前提是没有tbody 元素是表元素的子元素

尽管我认为将行划分为thead,tbodytfoot标记是一种很好的做法,因为它使表格的行更容易识别。

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

于 2020-11-15T10:14:26.913 回答
0

根据HTML 3.2 规范table不在 HTML 2 规范中)table元素没有tbody, thead, tfoot(它们是 HTML 4 的东西),只有可选captiontr/列表th

虽然您可能会认为您在谈论 1997 年和 2021 年的 HTML 3.2 到底是什么鬼,但考虑使用原始或过时 HTML 引擎的电子邮件客户端,tbody在这里没有任何意义。

于 2021-09-02T10:35:26.413 回答
-5

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

话虽如此,我的旧表在最新的浏览器上仍然可以正常工作。我正在努力学习,但是从长远来看,我会花一些额外的微秒来在这里和那里添加可选标签,最终会为您节省金钱/时间。

戴夫

于 2010-06-20T03:24:59.053 回答