javascript – 添加名称属性导致ID值成为IE和Opera中文档对象的属性?

考虑这个
HTML源代码:

<form id="foo1" name="x"> Form 1 </form>
<form id="foo2"> Form 2 </form>

如您所见,我们定义了两个FORM元素.

在Chrome,Safari和Firefox中,document.foo1和document.foo2都返回undefined.

但是,在IE和Opera中,document.foo1返回对相应FORM元素的引用,而document.foo2返回undefined.

现场演示:http://jsfiddle.net/zrmEm/2/

因此,第一个表单在文档对象中具有其ID命名属性,而第二个表单没有.这种差异是将name属性添加到第一个表单的结果.

现在,那里的逻辑在哪里?这是一种已知行为吗?

最佳答案 在所有浏览器中,表单的name属性的值被添加为文档对象的属性,并且还作为document.forms
collection的属性添加.

如果使用id,则仅将值添加为表单集合的属性.

IE总是对name和id属性感到困惑.在IE(测试版本8)中,只有当该表单还有一个名称(它可能与id相同或不同)时,才会在文档的属性中添加id.

所以,如果你总是使用document.forms [‘name-or-id’],那么生活就是甜蜜的.只要您没有名称与其他带有ID的表单相同的表单,那么所有的赌注都会关闭.

点赞