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

lla*_*err 0 html html-validation

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

你能解释一下为什么有人可能需要这个代码吗?

<table>
    <form>
        <tr>
            <td></td>
        </tr>
    </form>
    <form>
        <tr>
            <td></td>
        </tr>
    </form>
</table>
Run Code Online (Sandbox Code Playgroud)

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

<table>
    <tr>
        <td>
            <form></form>
        </td>
    </tr>
    <tr>
        <td>
            <form></form>
        </td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

或这个:

<form>
    <table>
        <tr>
            <td></td>
        </tr>
        <tr>
            <td></td>
        </tr>
    </table>
</form>
<form>
    <table>
        <tr>
            <td></td>
        </tr>
        <tr>
            <td></td>
        </tr>
    </table>
</form>
Run Code Online (Sandbox Code Playgroud)

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

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

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

Que*_*tin 6

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

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

你能解释一下为什么有人可能需要这个代码吗?

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

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


Ode*_*ded 5

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

今天,您可以在CSS中使用您喜欢的标记来实现。