document.getElementsByName不适用于单选按钮的动态值

时间:2017-06-22 06:28:14

标签: javascript html

我正在尝试从HTML中的单选按钮标记获取值到javascript,每次我尝试这样做时,我将单选按钮的长度设置为0并且返回值未定义。这是我的代码片段(值是动态的

<html>
<body>
<form>
   What color do you prefer?<br>
   <input type="radio" name="colors" id="red"    onclick="check();">Red<br>
   <input type="radio" name="colors" id="green"  onclick="check();">Green<br>
   <input type="radio" name="colors" id="yellow" onclick="check();">Yellow<br>
   <input type="radio" name="colors" id="blue"   onclick="check();">Blue<br>
</form>
<script>
function check()
{
   var isChangeReqd=getRadioButtonValue(document.getElementsByName("colors"));
}
function getRadioButtonValue(radioObj)
{
   var value;
   var radioLength=radioObj.length;
   alert(radioLength); //is 0 //for value 

   for(var i=0;i<radioLength;i++)
   {
      if(radioObj[i].checked) return radioObj[i];
   }
}
</script>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

您正在指定收音机的ID而不是单选按钮的名称。 使用document.getElementsByName("colors")代替document.getElementsByName("red")

&#13;
&#13;
<html>
<body>
<form>What color do you prefer?<br>
  <input type="radio" name="colors" id="red"    onclick="check();">Red<br>
  <input type="radio" name="colors" id="green"  onclick="check();">Green<br>
  <input type="radio" name="colors" id="yellow" onclick="check();">Yellow<br>
  <input type="radio" name="colors"id="blue"    onclick="check();">Blue
</form>
<script>
function check()
{
   var isChangeReqd=getRadioButtonValue(document.getElementsByName("colors"));
}
function getRadioButtonValue(radioObj)
{
   var value;
   var radioLength=radioObj.length;
   alert(radioLength); //is 0 //for value 

   for(var i=0;i<radioLength;i++)
   {
      if(radioObj[i].checked) return radioObj[i];
   }
}
</script>
</body>
</html>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

阅读Document.getElementsByName()功能会很有帮助。与其他答案一起,看起来您可能想要通过调用元素&#34; id&#34;来返回收音机的值。属性,如:if(radioObj[i].checked) value=radioObj[i].id ; 以下是我认为您希望做的一个工作示例。

&#13;
&#13;
function check()
{
var isChangeReqd=getRadioButtonValue(document.getElementsByName("colors"));
alert(isChangeReqd);
}

function getRadioButtonValue(radioObj) {
var value;
var radioLength=radioObj.length;
alert(radioLength);//is 0//for value

    for(var i=0;i<radioLength;i++)
    {
    if(radioObj[i].checked) value=radioObj[i].id ;
    }
    return value;
}
&#13;
<html>
<body>
<form>What color do you prefer?
<br>
    <input type="radio" name="colors" id="red" onclick="check();">Red<br>
    <input type="radio" name="colors" id="green" onclick="check();">Green<br>
    <input type="radio" name="colors" id="yellow" onclick="check();">Yellow<br>
    <input type="radio" name="colors"id="blue"onclick="check();">Blue
</form>
</body>
</html>
&#13;
&#13;
&#13;