4

寻找最好的、符合标准的、跨浏览器兼容的、向前兼容的方式来访问 DOM 中的一组单选按钮(这与我最近的另一篇文章密切相关......),而不使用任何外部库。

<input type="radio" value="1" name="myRadios" />One<br />
<input type="radio" value="2" name="myRadios" />Two<br />

我已经阅读了有关 getElementsByName() 的相互矛盾的信息,这似乎是正确的方法,但我不清楚这是否是符合标准、向前兼容的解决方案。也许有更好的方法?

4

2 回答 2

2

我对这个解决方案并不完全满意,但我终于在 Gecko DOM 文档中找到了它。

name 获取或设置 DOM 对象的 name 属性,它只适用于以下元素:anchor、applet、form、frame、iframe、image、input、map、meta、object、option、param、select 和 textarea。

HTMLElement.name = string;
var elName = HTMLElement.name;

var fControl = HTMLFormElement.elementName;
var controlCollection = HTMLFormElement.elements.elementName;

更多信息:https ://developer.mozilla.org/en/DOM/element.name

所以我想这是一种符合标准的处理方式(尽管最佳实践可能并不真正存在......)

document.getElementById('myForm').elements.myRadios
于 2010-03-13T04:15:03.050 回答
0

我认为未来最好的事情是:

form.elements.myRadios

对比

form.myRadios

原因是根据最新的规范elements.someName将返回一个对象RadioNodeList(如果多个元素具有相同的名称),该对象包含一个value指示选中项目值的属性。

form.myradios另一方面,将返回一个对象,NodeList该对象只是一个有序的项目集合,没有任何value属性。

在单选框和复选框中查找选中的项目传统上是一项非常痛苦的练习。

但是,我不确定我们将如何访问复选框的所有选中元素。在规范中找不到。希望这不会丢失。

于 2010-03-13T05:20:18.107 回答