1

我在从 Javascript 中的单选按钮组中获取值时遇到了很多困难。我已经搜索了几个小时并没有找到解决方案。当我尝试执行 document.write 命令以显示单选按钮选择的值时,它们都以“未定义”的形式返回。但有趣的是,如果我选择第一个单选按钮,它会返回显示的正确值。这是我沮丧的一部分,我还没有找到解决方案来找出如何在单选按钮组中获取其他值,这应该很简单!对你的帮助表示感谢。

请仔细查看我的 Javascript 代码以尝试获取该值(请忽略 return false; 命令,因为我使用它来停止我页面上的其余代码):

for( i = 0; i < document.forms.incident.elements.model.length; i++ )
{
  if(document.forms.incident.elements.model[i].checked)
    var omodcheck = document.forms.incident.elements.model.value;
document.write(omodcheck);
return false;
}

我的 HTML 表单名称是事件。单选按钮组的表单代码如下:

Laptop Model:
<input type="radio" name="model" value="Lenovo X200" />Lenovo X200<br />
<input type="radio" name="model" value="Lenovo X201" />Lenovo X201<br />
<input type="radio" name="model" value="Lenovo X200T" />Lenovo X200T<br />
<input type="radio" name="model" value="Lenovo X201T" />Lenovo X201T<br />
<input type="radio" name="model" value="Lenovo T400" />Lenovo T400<br />
<input type="radio" name="model" value="Lenovo R400" />Lenovo R400<br />

在这种情况下,document.write(omodcheck) 的代码返回值“Lenovo X200”,但是,如果我选择其他任何单选按钮,则返回值“未定义”!

请帮忙!

4

2 回答 2

1

如果我理解正确,您将需要这样的东西:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  xml:lang="en">
<head>
<script type="text/javascript"> 
function checkChecked(){
    for (var i = 0; i< document.getElementsByName('model').length; i++) {
        if(document.testform["model"][i].checked){          
            var omodcheck = document.testform["model"][i].value
            alert(omodcheck);
        }
    }
}
</script> 
</head>
<body onload="checkChecked()">
Laptop Model:
<form name="testform">
    <input type="radio" name="model" value="Lenovo X200" onchange="checkChecked()" />Lenovo X200<br />
    <input type="radio" name="model" value="Lenovo X201" onchange="checkChecked()" />Lenovo X201<br />
    <input type="radio" name="model" value="Lenovo X200T" onchange="checkChecked()" />Lenovo X200T<br />
    <input type="radio" name="model" value="Lenovo X201T" onchange="checkChecked()" />Lenovo X201T<br />
    <input type="radio" name="model" value="Lenovo T400" onchange="checkChecked()" />Lenovo T400<br />
    <input type="radio" name="model" value="Lenovo R400" onchange="checkChecked()" checked />Lenovo R400<br />
</form>
</body>
</html>

或者

在你的 if 条件上使用括号:

for( i = 0; i < document.forms.incident.elements.model.length; i++ )
{
  if(document.forms.incident.elements.model[i].checked){
        var omodcheck = document.forms.incident.elements.model[i].value;
        document.write(omodcheck);
    }
}
于 2013-07-24T09:47:16.647 回答
0

据我了解,这是一个非常小的错误,因为 for 循环以您的 return false 语句结束。return false 必须在 for 循环之外。

看看这个jsfiddle(稍微修改为使用 alert() 而不是 document.write();

    btnSubmit.onclick = function(){
for( i = 0; i < document.forms.incident.elements.model.length; i++ )
{
  if(document.forms.incident.elements.model[i].checked)
    var omodcheck = document.forms.incident.elements.model.value;
}
    alert(omodcheck);
return false;
}
于 2013-07-24T09:44:07.953 回答