Moonless.net

水可载舟易可覆舟,风可凉爽易可成宰,云可无形易可有象。

导航

在以前的教材和实际应用里,应该很常见这种类型的嵌套:

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

目的无非是不想让form的margin和padding撑出不应有的空白,而这样做一直以来也都是有效的,在IE中无论是动态create出的表单项还是原有的内容都能被正确地传递,虽然这样是不符合DOM规范的。

在Firefox中,上面的嵌套也能正确地传递事先定义的表单参数,但是如果使用DOM创建新的表单项,新的Node无法与未按标准嵌套的form建立关联,所以post数据的时候它是不会被传递的。

需要的改动仅仅是让结构更清晰:
<form>
    <table>
        <tr><td></td></tr>
    </table>
</form>
现在我们只需要把form的margin和padding设为0,无需杂乱无可辨认的可恶嵌套。

感谢标准化带给我们的一切。