这个可以用阿信的无限级下拉框连动
http://www.kaifz.com/-t51960.htm

解决方案 »

  1.   

    感觉用radio不如用select啊,既然你要用radio的,等会我试着写个radio的
      

  2.   

    给你个例子,你参考下吧,说实话,可能帮不上什么忙,因为你是要到数据库中去取数据的,可以给你的思路,返回数据的时候返回已经组装好的HTML代码,在页面要动态显示的地方加一个<span>标签,然后在页面用JS修改这个标签的innerHTML代码
    <script language=javascript>
    function show(obj,index)
    {
    if(index==1)
    {
    var str1=obj.value
    var str2
    var objs=document.getElementsByName("radio2")
    for(var i=0;i<objs.length;i++)
    {
    if(objs[i].checked)
    {
    str2=objs[i].value;
    break;
    }
    }
    }
    else
    {
    var str2=obj.value
    var str1
    var objs=document.getElementsByName("radio1")
    for(var i=0;i<objs.length;i++)
    {
    if(objs[i].checked)
    {
    str1=objs[i].value;
    break;
    }
    }
    }
    var k=str1+str2
    var objs=document.getElementsByName("radio3")
    for(var i=0;i<objs.length;i++)
    {
    if(objs[i].value==k)
    {
    objs[i].checked=true
    break;
    }
    }
    }
    </script>
    <table border="1">
    <tr>
    <td>
    <input name=radio1 type=radio value="1" onclick="show(this,1)" checked>数学
    <input name=radio1 type=radio value="2" onclick="show(this,1)">外语
    </td>
    </tr>
    <tr>
    <td><input name=radio2 type=radio value="1" onclick="show(this,2)" checked>一级
    <input name=radio2 type=radio value="2" onclick="show(this,2)">二级</td>
    </tr>
    <tr>
    <td> <input name=radio3 type=radio value="11">代数
    <input name=radio3 type=radio value="12">几何
    <input name=radio3 type=radio value="21">英语
    <input name=radio3 type=radio value="22">法语
    </td>
    </tr>
    </table>
      

  3.   

    你需要两个文件,一个是前台html文件,用来展示那些radiobutton供顾客选择,并想办法动态显示第三组radiobutton
    内容如下: test.htm
    <table border width=60%><tr><td>科目</td><td>级别</td><td>课程</td></tr><tr>
    <td>
    <INPUT type=radio name=a1 id=t11 onclick=f(this) checked><label for=t11>数学</label><br>
    <INPUT type=radio name=a1 id=t12 onclick=f(this)        ><label for=t12>计算机</label><br>
    <INPUT type=radio name=a1 id=t13 onclick=f(this)        ><label for=t13>语文</label><br>
    </td>
    <td>
    <INPUT type=radio name=a2 id=t21 onclick=f(this)><label for=t21>一级(小学)</label><br>
    <INPUT type=radio name=a2 id=t22 onclick=f(this)><label for=t22>二级(中学)</label><br>
    <INPUT type=radio name=a2 id=t23 onclick=f(this)><label for=t23>三级(大学)</label><br>
    </td>
    <td><div id=o>&nbsp;</div></td></tr></table>
    <script>
    function f(obj){
    var s="<INPUT type=radio name=a3 id=t3$><label for=t3$>#</label><br>"
    var lst=document.getElementsByName((obj.name=="a1")?"a2":"a1") 
    for(var i=0;i<lst.length;i++){
    if (lst[i].checked){
     if (obj.name=="a1"){
    var q=["a1=",obj.id,"&a2=",lst[i].id,"&r=",Math.random()].join("")
     }else{
    var q=["a1=",lst[i].id,"&a2=",obj.id,"&r=",Math.random()].join("")
     }
     break;
    }
    }
    if (!q) return false
    var req =new ActiveXObject("Microsoft.XMLHTTP"); 
    req.open("GET","http://localhost/t.asp?"+q, true); 
    req.onreadystatechange = function(){
       if (req.readyState == 4) { 
    var arr=(unescape(req.responseText)).split("|")          
    var arr2=[]
    for(var i=0;i<arr.length;i++) arr2.push(s.replace(/\$/g,i+1).replace("#",arr[i]))
    o.innerHTML=arr2.join("")
          }
    }
    req.send(null); 
    }
    </script>另一个是asp文件,用来根据顾客的选择从数据库里面读取第三组radio的信息
    t.asp 
    '注意我的这个t.asp是放在 http://localhost/t.asp里的,调试的时候先确保http://localhost/t.asp是存在的。可以根据需要修改test.htm中http://localhost/t.asp这个字串<%  ''这里可以根据a1,a2进行复杂数据库查询,
       ''我这里只作为一个范例,直接用判断语句返回了  
    select case trim(Request.QueryString("a1")) & trim(Request.QueryString("a2"))
    case "t11t21": 
    t="小学数学1|小学数学2|小学数学3|小学数学4"
    case "t11t22":
    t="中学数学1|中学数学2|中学数学3|中学数学4"
    case "t11t23":
    t="大学数学1|大学数学2|大学数学3|大学数学4"
    case "t12t21":
    t="小学计算机1|小学计算机2|小学计算机3|小学计算机4"
    case "t12t22":
    t="中学计算机1|中学计算机2|中学计算机3|中学计算机4"
    case "t12t23":
    t="大学计算机1|大学计算机2|大学计算机3|大学计算机4"
    case "t13t21":
    t="小学语文1|小学语文2|小学语文3|小学语文4"
    case "t13t22":
    t="中学语文1|中学语文2|中学语文3|中学语文4"
    case "t13t23":
    t="大学语文1|大学语文2|大学语文3|大学语文4"
    end select
    Response.Write escape(t) 
    %>
      

  4.   

    当然ajax 返回的数据你可以用 xml来封装,那样显得更优雅,程序也更可读
      

  5.   

    有这么多人了,原理是一样的:
    1种方法,页面加载的时候把第3项的内容按一定的规律保存起来,然后根据前2个选的值生成第3项,这和连动下拉框的原理一样
    2种方法是用 ajax,直接到后台检索生成
      

  6.   

    很感谢各位的帮忙!我将另开一个100分贴感谢大家!
    很抱歉,我昨天描述的需求有些问题,应该是:
    只有第一组的radiobutton数目固定,第二和第三组的radiobutton数目都是根据第一组的选择动态生成的。
    我现在的想法是这样:
    从数据库取出所有的组合,放到一个3维数组中,然后根据第一组的选择生成第二和第三组的radiobutton,但我不知道在JS中如何使用3维数组,比如添加内容和查找匹配内容,请那位大侠给个例子,谢谢!
      

  7.   

    不用3维数组,用2维数组就可以http://community.csdn.net/Expert/topic/4591/4591670.xml?temp=.1432154
      

  8.   

    十分感谢mingxuan3000(铭轩)提供的链接,不好意思,还有个问题请教:
    怎么把数据库中取出的所有的3组radiobutton的组合记录JS的数组中呢?