我在支持的代码中发现了一些拼写错误(我认为是这样)并将其发布到本地网站,就像一个无效代码的有趣例子。然后有人告诉我,有时这种无效用法是正确的。
您能否解释一下为什么有人可能需要此代码?
<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决定,所以也许这就是原因。
但我仍然认为JS或CSS的方式会更好
答案 0 :(得分:5)
然后有人告诉我,有时这种无效用法是正确的。
根据定义,无效代码不正确。
您能否解释一下为什么有人可能需要此代码?
每行一个单元格?甚至没有一半的理由。首先不应该有一张表,因为它不是表格数据。
如果每行有多个单元格,那么能够每行有一个表单(对于“编辑此条目”的事情)会很好。但是没有必要,因为您可以为每个输入提供唯一的名称,然后根据单击的提交按钮确定要处理的行(因为只有单击的提交按钮才会成功,因此提交了其名称/值对到服务器)。
答案 1 :(得分:4)
这是一种让两个表单元素相互对齐的方法 - 基于表格的UI对齐方式。在CSS被浏览器广泛支持之前,它曾经很常见。
今天有人会用你喜欢的标记在CSS中做到这一点。
答案 2 :(得分:2)
据我所知,示例1根本不是有效的HTML。尝试通过验证器运行它。但是,大多数浏览器都会宽容,不关心。
示例2和3绝对没问题。我个人在大多数情况下使用示例3,将所有“属于”表单的内容包装在表单标记中。