我在一个页面上点击一个按钮出现下面网页。然后想实现根据父页面上的某个text内容显示不同的选择项。显示选择项的时候用DRTEE显示,感觉好看一点。然后就出现提交后一直在会循环到alert,点击确定又alert,不会调用我的getRadio()方法。<link rel="StyleSheet" href="dtree.css" type="text/css" />
<script type="text/javascript" src="dtree.js"></script>
<script type="text/javascript" >
function getRadio()
{
 for (var i=0; i < document.form1.check.length; i++)
   {
   if (document.form1.check[i].checked)
      {
         window.opener.document.getElementById("article_jrfs").value=document.form1.check[i].value;
         window.close(); 
      }
   }
}
</script></head>
<body>
<div class="dtree">
<form name="form1">
<script type="text/javascript">
dd = new dTree('dd');
dd.add(0,-1,'接入方式','');
var a = window.opener.document.getElementById("article_ywlx").value;
alert(a);
if(a=="金") 
{
dd.add(1,0,'<input type="radio" name="check" value="黄金" >黄金','');
}
        if(a=="铜"){
dd.add(1,0,'<input type="radio" name="check" value="赤铜" >赤铜','');
}
        if(a=="铁"){
dd.add(1,0,'<input type="radio" name="check" value="生铁" >生铁','');
} document.write(dd);
</script>
<input type="submit" value="确定" width="50" onclick="getRadio()" />
</form>

解决方案 »

  1.   

    在上面的js中添加了alert发现可以运行到getRadio()
    但是不执行下面两句,不会将这个值赋给父页面的text,子页面也不会自动关闭。window.opener.document.getElementById("article_jrfs").value=document.form1.check[i].value;
    window.close(); 
      

  2.   


    alert(document.form1.check.length)发现为undefined
      

  3.   

    你也太粗心了,当然是undefined.这不是你要的效果吗???
      

  4.   

    请你自己仔细看看你自己写的代码.你改了以后的代码中我发现只能出现一个check啊!!!那么check就不是个数组了,仅仅是一个check.
    function getRadio()
    {
       if (document.form1.check.checked)
       {
             window.opener.document.getElementById("article_jrfs").value = document.form1.check.value;
             window.close(); 
       }} 
    其他都没有问题. 也没有出现你所说的循环 ...
      

  5.   

    多谢指点 谢谢了 
    我昏了 多个的时候才是数组 要循环判断 一个的时候直接取就可以了
    可能由于是undifind 在for循环里面就过不去了,一直在循环。