0

我想要的是:

if(document.forms[0].elements[0][1].checked)

或者

 if(document.forms[0].elements[0].[1].checked)

有效的是:

if(document.forms[0].rad[1].checked)

鉴于:

<h3>Who's Bill?</h3>
<input type="radio" value="0" name="rad">Bill Clinton
<input type="radio" value="1" name="rad">Bill Gates
4

2 回答 2

1

好吧,您的第二个首选选项在语法上是错误的。它在任何情况下都不起作用,因为它违反了语言规则。

您的首选方法并非不合理,但请考虑您要求的是特定元素。即,表单中的第一个元素。该元素是一个单选按钮,而不是一组单选按钮,因此,尽管该语法可能是您的偏好,但它实际上并不遵循您在代码中查看的内容。

它的工作方式是表单获取一个以单选组名称命名的数组对象,并且该数组的子项按照单选按钮实际出现的顺序填充。

您也可以将它们作为 document.forms[0].elements["rad"][0];//(1, 2... 等) 访问它们,这对您来说可能感觉更好?我不知道...我不确定您的首选方法是基于什么,所以很难说这是否会更吸引您。

于 2012-04-21T07:54:33.093 回答
0

elements包含所有表单元素的数组。这意味着,当您指向document.forms[0].elements[0]您指向的第一个单选按钮元素时。相反,当您使用时document.forms[0].rad,您将指向一个name等于“rad”的元素:如果多个元素具有相同的名称,则返回的是一个元素数组。

所以有类似的东西document.forms[0].elements[0][1]完全是错误的:你试图访问一个名为“1”的属性到你的 HTMLInputElement 对象。此外,您需要在 HTML 代码中使用名称来“分组”无线电,否则它们可以一起选择而不是相互排斥。

如果你真的想要,你可以得到类似的东西,建立你自己的功能,有类似的东西:

var elements = getElements(document.forms[0]);

if (elements[0][1].checked)

但我没有看到好处。

于 2012-04-21T11:30:01.663 回答