我想要的是:
if(document.forms[0].elements[0][1].checked)
OR
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
答案 0 :(得分:1)
好吧,你的第二个首选选项只是语法错误。它不会在任何情况下起作用,因为它违反了语言规则。
您首选的方法并非不合理,但请考虑您要求的是特定元素。即,表单中的第一个元素。该元素是一个单一的单选按钮,而不是它们的一组,因此,尽管语法可能是您的首选,但它实际上并不遵循您在代码中看到的内容。
它的工作方式是表单获取一个以无线电组名称命名的数组对象,并按照单选按钮实际出现的顺序填充该数组的子节点。
您也可以访问它们
document.forms[0].elements["rad"][0];//
(1,2 ......等)
哪个可能对你感觉更好?我不知道......我不确定你的首选方法是什么,因此,很难说这是否会对你产生更大的吸引力。
答案 1 :(得分: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)
但我没有看到好处。