没有tr的表有效吗?

时间:2016-03-04 11:58:03

标签: html html-table

如果只有一行,是否有效的HTML可以省略表中的tr元素?如果它无效,是否所有当前浏览器都按预期解释它?

换句话说,这是......

<table>
     <td>column 1</td>
     <td>column 2</td>
</table>

......表现得与此相同......

<table>
   <tr>
     <td>column 1</td>
     <td>column 2</td>
   </tr>
</table>

2 个答案:

答案 0 :(得分:4)

按照标准,这是无效的,但 tbody,tr,td 浏览器会忽略这些标记和相应的结束标记。但您无法在标记之外编写这些标记。 请查看以下表格创建示例:http://www.w3schools.com/html/tryit.asp?filename=tryhtml_table_elements

答案 1 :(得分:3)

虽然它不符合Spec的有效HTML,但现代Web浏览器的行为并不严格,而是为用户提供更易读的输出而不是垃圾,这有时是开发人员的错误(不指向您)。 / p>

究竟哪些有效,哪些无效,无法确定。此外,如果浏览器解析了一些错误的代码,目前也无法确保在将来的版本中是否也会这样做。

从HTMLRocks文章中查看以下关于 Browser's Error Tolerance的摘录 How Browsers Work: Behind the scenes of modern web browsers 即可。该链接还有一些关于错误更正的例子。

  

错误处理在浏览器中非常一致,但令人惊讶的是   它不是HTML规范的一部分。喜欢书签和   后退/前进按钮它只是在浏览器中开发的东西   这些年来。已经重复了已知的无效HTML构造   许多网站,浏览器尝试以符合的方式修复它们   其他浏览器。

     

HTML5规范确实定义了其中一些要求。   (WebKit在开头的评论中很好地总结了这一点   HTML解析器类。)

     

解析器将标记化的输入解析到文档中,构建了   文件树。如果文档格式正确,则解析它   简单。

     

不幸的是,我们必须处理许多不是的HTML文档   格式良好,因此解析器必须容忍错误。

     

我们必须至少处理以下错误情况:

     
      
  1. 在某些外部明确禁止添加的元素   标签。在这种情况下,我们应该关闭所有标签   禁止该元素,然后添加它。

  2.   
  3. 我们不允许直接添加元素。可能是那个   写文件的人忘记了一些标签(或者说   中间的标签是可选的)。这可能就是这种情况   以下标签:HTML HEAD BODY TBODY TR TD LI(我忘记了吗?)。

  4.   
  5. 我们想在内联元素中添加一个块元素。关闭所有   内联元素直到下一个更高的块元素。

  6.   
  7. 如果这没有帮助,请关闭元素,直到我们被允许添加   元素 - 或忽略标记。

  8.   

您还可以查看w3c文章Validating your HTML > Different browsers interpret invalid HTML differently

  

有效的HTML是您与浏览器签订的唯一合同   制造商。 HTML规范说你应该如何编写它,   以及他们应该如何解释你的文件

     

...

     

不同浏览器的行为都不正确;他们都是   试图填补你错误代码的空白。底线是,   尽可能避免在页面中使用无效标记!

     

请注意,HTML5修复此问题,这是历史上的第一次   HTML它定义了浏览器应该如何处理格式错误的标记。在   但是,编写时,对HTML5错误处理的支持不是   在浏览器中广泛使用,因此您还不能依赖它。