我有一个函数,我得到一个错误,说“长度”为空,然后我做了一个警告,看到值和长度,我看到值回到循环中,有时它有一个字符串值和有时它有一个数字(例如SUIT然后是8),但由于某种原因,长度显示为未定义? radioobj变量获取从表单输入中传入的单选按钮值。
function getRadioValue(radioobj) {
radiovalue = "";
for (i=0, n=radioobj.length; i<n; i++) {
if (radioobj[i].checked) {
radiovalue = radioobj[i].value;
break;
}
}
if (!radiovalue) { return 0; }
else { return radiovalue; }
}
答案 0 :(得分:0)
编写代码的方式,它似乎是在寻找一组单选按钮并循环遍历它们以找到被检查的代码。为此,输入必须是单选按钮的集合。 。 。将单个引用传递给单选按钮将不起作用(并且将为undefined
提供radioobj.length
值。例如:
<强> HTML 强>
<fieldset id="radioVals">
<input type="radio" name="radioVals" id="val0" value="">Pick an value . . .</input>
<input type="radio" name="radioVals" id="val1" value="Value1">Value 1</input>
<input type="radio" name="radioVals" id="val2" value="Value1">Value 2</input>
</fieldset>
鉴于此组,如果您要传递对任何单个单选按钮的引用(例如,使用document.getElementById
),您将得到并出错,因为该方法返回的是对个人因素。
var radioOption = document.getElementById("val0");
window.console.log(radioOption.length); // will log "undefined"
但是,如果传入一组单选按钮元素(例如,使用.children
),则可以使用for
循环,因为该数组将具有长度。
var radioOptions = document.getElementById("radioVals").children;
window.console.log(radioOptions.length); // will log "3"
根据您的描述,听起来代码使用的是第一种方法,而不是第二种方法。肯定有使用单独的单选按钮进行此检查的方法,但这不是如何设置此代码。
答案 1 :(得分:0)
您可以轻松获取具有相同ID的收音机。
用于document.forms['form_id']['radio_id']
:
<form id="form_id">
<input type="radio" name="radio_name" id="radio_id" value="Value1" />Value 1
<input type="radio" name="radio_name" id="radio_id" value="Value2" />Value 2
<input type="radio" name="radio_name" id="radio_id" value="Value3" />Value 3
</form>
var radio_list = document.forms['form_id']['radio_id'];
alert(radio_list.lengh) // will "3"