表格行没有单元格吗?

时间:2015-09-03 17:59:44

标签: html html5 html-table language-lawyer w3c-validation

我使用HTML表格来创建时间表。每行代表半小时,单元格可以使用rowspan跨越多行。

有时候我有空tr个元素,因为所有的插槽都是前一行的单元格。

在这种情况下,HTML validator抱怨:

  

tbody元素建立的行组的行[N]没有单元格   从它开始。

当然,我可以删除那些空tr并减少展开单元格的rowspan值。但随后rowspan值将不再单一地对应于单元格的持续时间。

因此,空tr真的无效吗?为什么呢?

2 个答案:

答案 0 :(得分:4)

根据当前的HTML规范,您无法在有效HTML文档的表格中拥有空行。

也许你正确应该能够,但规范目前明确表示你不能。因此,如果有人认为规范允许这样做,那么正确的做法是file an issue against the HTML Standard in its github tracker甚至是write a patch and open a PR for it

具体来说,规范定义了以下错误情况:

https://html.spec.whatwg.org/multipage/tables.html#the-table-element

  

如果表中只有一个行或列包含没有锚定到它们的单元格的插槽,那么这就是表模型错误。

在Internet规范术语中,这是一个“规范”的权威声明,不能被其他任何内容忽略或覆盖。它表示硬性要求

其他地方的规范说:

  

tr元素:内容模型

     

https://html.spec.whatwg.org/multipage/tables.html#the-tr-element   零个或多个td,th和脚本支持元素

但这实际上并不矛盾,与上面引用的“表模型错误”要求不冲突或取代或覆盖。事实上,正好相反 - “表模型错误”要求取代了另一部分中更为自由的要求(上文引用)有效tr元素可以有零个或多个子元素

规范中任何更严格的要求总是取代或覆盖任何更自由的要求。

答案 1 :(得分:0)

在HTML规范的table model section中,您可以找到以下声明:

  

行通常对应于tr元素,但行组在末尾可能有一些隐含的行,在某些情况下涉及跨越多行的单元格。

但是,这对表格中间的空行不起作用,因为隐含的行只能在结尾处出现。

另一种可能性是在左侧添加一个带有<th>元素的列,作为该行的标题。毕竟,用户可能想知道一个表行代表什么 - 正如您在此处告诉我们的那样。