为什么有人可能会使用无效的HTML?

时间:2011-04-18 19:21:21

标签: html html-validation

我在支持的代码中发现了一些拼写错误(我认为是这样)并将其发布到本地网站,就像一个无效代码的有趣例子。然后有人告诉我,有时这种无效用法是正确的。

您能否解释一下为什么有人可能需要此代码?

<table>
    <form>
        <tr>
            <td></td>
        </tr>
    </form>
    <form>
        <tr>
            <td></td>
        </tr>
    </form>
</table>

而且在哪些情况下它可能比以下更好?

<table>
    <tr>
        <td>
            <form></form>
        </td>
    </tr>        
    <tr>
        <td>
            <form></form>
        </td>
    </tr>
</table>

或者这个:

<form>
    <table>
        <tr>
            <td></td>
        </tr>        
        <tr>
            <td></td>
        </tr>
    </table>
</form>
<form>
    <table>
        <tr>
            <td></td>
        </tr>        
        <tr>
            <td></td>
        </tr>
    </table>
</form>

----------------- EDIT 我在jsfiddle上玩了​​一点,找不到html决定,所以也许这就是原因。

http://jsfiddle.net/WcvFj/3/

但我仍然认为JS或CSS的方式会更好

3 个答案:

答案 0 :(得分:5)

  

然后有人告诉我,有时这种无效用法是正确的。

根据定义,无效代码不正确。

  

您能否解释一下为什么有人可能需要此代码?

每行一个单元格?甚至没有一半的理由。首先不应该有一张表,因为它不是表格数据。

如果每行有多个单元格,那么能够每行有一个表单(对于“编辑此条目”的事情)会很好。但是没有必要,因为您可以为每个输入提供唯一的名称,然后根据单击的提交按钮确定要处理的行(因为只有单击的提交按钮才会成功,因此提交了其名称/值对到服务器)。

答案 1 :(得分:4)

这是一种让两个表单元素相互对齐的方法 - 基于表格的UI对齐方式。在CSS被浏览器广泛支持之前,它曾经很常见。

今天有人会用你喜欢的标记在CSS中做到这一点。

答案 2 :(得分:2)

据我所知,示例1根本不是有效的HTML。尝试通过验证器运行它。但是,大多数浏览器都会宽容,不关心。

示例2和3绝对没问题。我个人在大多数情况下使用示例3,将所有“属于”表单的内容包装在表单标记中。