我正在尝试将单选按钮的值发送到javascript函数。最终这个函数会做更多但是我的测试已经走到了尽头,因为我一直得到一个未定义的返回值。这就是我所拥有的:
<!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">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 1</title>
<SCRIPT TYPE="text/javascript">
<!--
function jobWindow(){
var target;
for( i = 0; i < document.jobView.sales.length; i++ ){
if( document.jobView.sales[i].checked == true )
target = document.jobView.sales[i].value;
break;
}
alert( "val = " + target );
//var load = window.open('target','','scrollbars=no,menubar=no,height=600,width=800,resizable=yes,toolbar=no,location=no,status=no');
}
// -->
</script>
</head>
<body>
<form name="jobView">
<input name ="sales" value="all" type="radio" />All
<input name="sales" value="darell" type="radio" />Darell
<input name="sales" value="kevin" type="radio" />Kevin
<input name="sales" value="brad" type="radio" />Brad
<input name="sales" value="chongo" type="radio" />Chongo
<input type="button" value="View Records" onclick="jobWindow()"/>
<input type="button" value="View Calendar" />
</form>
</body>
</html>
答案 0 :(得分:4)
您真正想要的访问路径是:
var el = document.forms["jobView"].elements["sales"];
直点链(document.jobView.sales)对“all”集合进行隐式调用,该集合仅在IE中有效。 (是的,我知道当出现问题时Firefox会在其错误控制台中返回一个看起来相同的字符串,但你实际上无法在自己的代码中使用它。)getELementsByTagName()和getElementsByName()可以正常工作,但是您需要确保返回集合中的元素是您真正想要的元素。 (假设你想要在页面上创建多个表单的时候到了,那个字段名称就会发生冲突。当然,它永远不会发生,除非你没有把这个假设排除在门外,于是另一个开发人员将立即向您刚刚提交的页面添加第二个表单。)
答案 1 :(得分:3)
尝试document.getElementsByTagName
这样:
function jobWindow(){
var myvalue;
var el = document.getElementsByTagName('input');
for( i = 0; i < el.length; i++ ){
if (document.forms['jobView'].el[i].type === 'radio' && document.forms['jobView'].el[i].name === 'sales')
{
if(document.forms['jobView'].el[i].checked == true )
{
myvalue = document.forms['jobView'].el[i].value;
break;
}
}
}
alert( "val = " + myvalue );
}
另请注意,您的break
行从未执行,因为您缺少大括号:
if( document.jobView.sales[i].checked == true )
{
target = document.jobView.sales[i].value;
break;
}
答案 2 :(得分:3)
将 document.jobView.sales 更改为 document.getElementsByName('sales')
答案 3 :(得分:1)
在那里抛出一些调试。例如,在for()语句中放置一个alert(),以确保它获得document.jobView.sales.length
的定义。
如果它没有发出警报,你几乎可以打赌document.jobView.sales.length
未定义。
然后,您可以try { var length = document.jobView.sales.length; } catch(e) { alert(e); }
进行验证。
如果您确定未定义document.jobView.sales.length
,则可能必须使用document.getElementsByTagName
,然后循环播放document.jobView