【发布时间】:2011-01-26 23:46:25
【问题描述】:
任何经验丰富的 JavaScript 开发人员都知道,有很多(太多)方法可以做同样的事情。例如,假设您有一个如下文本字段:
<form name="myForm">
<input type="text" name="foo" id="foo" />
在 JavaScript 中有很多方法可以访问它:
[1] document.forms[0].elements[0];
[2] document.myForm.foo;
[3] document.getElementById('foo');
[4] document.getElementById('myForm').foo;
... and so on ...
方法 [1] 和 [3] 在 Mozilla Gecko 文档中有详细记录,但都不是理想的。 [1] 太笼统而无用,[3] 需要一个 id 和一个名称(假设您要将数据发布到服务器端语言)。理想情况下,最好只有一个 id 属性或一个 name 属性(两者都有有点冗余,特别是如果 id 对于任何 css 都不是必需的,并且增加了拼写错误的可能性等)。
[2] 似乎是最直观的并且似乎被广泛使用,但我没有在 Gecko 文档中看到它的引用,我担心前向兼容性和跨浏览器兼容性(当然我希望尽可能符合标准)。
那么这里的最佳做法是什么?任何人都可以指出 DOM 文档或 W3C 规范中可以解决此问题的内容吗?
注意我对非库解决方案(jQuery/Prototype)特别感兴趣。
【问题讨论】:
-
我想归根结底是我正在寻找最符合标准的方式来使用 name 属性访问表单元素...
-
"两者兼有有些多余,尤其是在任何 css 都不需要 id 的情况下,并且增加了拼写错误的可能性" -- ID 是有效使用标签所必需的。不仅仅是 CSS。
-
有时网页上有多个表单,id属性可能会发生冲突。
标签: javascript html forms dom