是否有必要在每张桌子中加<tbody>
?根据标准。
答案 0 :(得分:39)
仅在您定义thead
和tfoot
时。它主要在表具有多个内容体时使用。如果表中的数据很容易理解为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
元素的子元素,在任何caption
,colgroup
和thead
元素之后,但仅当没有tbody
元素是表格元素的子元素。即使我认为对行进行分段也是一种好习惯 在
thead
,tbody
和tfoot
标记中,因为它使表格行 更容易识别。最后,浏览器将始终为您添加至少
tbody
。
答案 4 :(得分:-5)
大多数浏览器都是宽容的,但即使如此,我在我现在使用的所有表中都添加了这对。甚至是琐碎的表格。特别是现在我越来越多地使用CSS来装饰这些表。
所有这一切,我说旧桌子在最新的浏览器上仍能正常工作。我正在学习艰难的方法,但是在这里添加几个额外的Micro秒来添加可选标签,从长远来看,这样可以节省您的金钱/时间。
戴夫