这个?? 重新说一遍有4个radio按钮,其中选择其中一个 radio 后,显示出一个表格,选其他3个radio则
不显示这个表格。表格的内容为三个‘text’输入框。
当只有一个 radio 组(4个按钮)时没问题,但当我需要有多组radio时(
订单1、订单2、订单3...中都有相同的的内容『比如:radio-1  
radio-2 radio-3 radio-4     选择 radio-1 显示 text框,选其他3个radio则
不显示』),正常情况下,在订单2中选择 radio-1,显示text框,选 radio-2,
订单2中的 text框 不显示。但我现在的情况是,选订单-2中的 radio-2 时,订单2
中的 text框 还是显示的,却把订单1的 text框 给隐藏掉了。页面中,我是把这一组 radio+text 写在一个循环里的,因为具体的radio+text
要有几组是根据需要决定

解决方案 »

  1.   

    你在循环里生成的时候,要注意每一个订单要有不同的ID来区分,因为你用的是相当的ID所以就会出错。下面的例子中,
    订单一的三个input那一行的<tr>的id=input_order1
    订单二的三个input那一行的<tr>的id=input_order2
    onclick事件中的对象也相应地要变化。<table>
    <tr><td>订单一</td></tr>
    <tr><td>
    <input type="radio" value="radio-1" name="radio_order1" onclick="document.getElementById('input_order1').style.display='';">显示
    <input type="radio" value="radio-2" name="radio_order1" onclick="document.getElementById('input_order1').style.display='none';">不显示
    <input type="radio" value="radio-3" name="radio_order1" onclick="document.getElementById('input_order1').style.display='none';">不显示
    <input type="radio" value="radio-4" name="radio_order1" onclick="document.getElementById('input_order1').style.display='none';">不显示
    </td></tr>
    <tr><td id="input_order1"><input><input><input></td></tr>
    <tr><td height="30"> </td></tr>
    <tr><td>订单二</td></tr>
    <tr><td>
    <input type="radio" value="radio-1" name="radio_order2" onclick="document.getElementById('input_order2').style.display='';">显示
    <input type="radio" value="radio-2" name="radio_order2" onclick="document.getElementById('input_order2').style.display='none';">不显示
    <input type="radio" value="radio-3" name="radio_order2" onclick="document.getElementById('input_order2').style.display='none';">不显示
    <input type="radio" value="radio-4" name="radio_order2" onclick="document.getElementById('input_order2').style.display='none';">不显示
    </td></tr>
    <tr><td id="input_order2"><input><input><input></td></tr>
    </table>
      

  2.   

    这里是我写的一个示例,你可以参考一下,根据输入的订单数量循环生成一组订单:<script>
    function buildOrder(orderNum){
      alert('订单数:'+orderNum);//显示订单数
      var tab1=document.getElementById('tab1');//获得table对象
      for(i=1;i<=orderNum;i++){//生成订单(radio+input组)
        //生成订单号行
    var tr=tab1.insertRow();//插入行
    var td=tr.insertCell();//插入列
    td.innerText='订单'+i;//向列中写内容(订单序号)
    //生成radio组行
    var tr=tab1.insertRow();//插入行
    var td=tr.insertCell();//插入列
    td.innerHTML='<input type=radio value=radio-1 name=radio_order'+i+'   onclick=document.getElementById(\'input_order'+i+'\').style.display=\'\'; checked>显示';//向列中写入第一个radio
    td.innerHTML+='<input type=radio value=radio-2 name=radio_order'+i+' onclick=document.getElementById(\'input_order'+i+'\').style.display=\'none\';>不显示';//向列中写入第二个radio
    td.innerHTML+='<input type=radio value=radio-3 name=radio_order'+i+' onclick=document.getElementById(\'input_order'+i+'\').style.display=\'none\';>不显示';//向列中写入第三个radio
    td.innerHTML+='<input type=radio value=radio-4 name=radio_order'+i+' onclick=document.getElementById(\'input_order'+i+'\').style.display=\'none\';>不显示';//向列中写入第四个radio
    ////生成input组行
    var tr=tab1.insertRow();//插入行
    tr.id="input_order"+i;//定义行id
    var td=tr.insertCell();//插入列
    td.innerHTML="<input><input><input>";//向列中写入三个input
    //生成一个空行(美观起见,可以不要)
    var tr=tab1.insertRow();
    var td=tr.insertCell();
    td.height="30";
    td.innerText=" ";
    alert('订单'+i+'生成完毕!');
      }
    }    
    </script>请输入订单数:<input type="text" value="3" id="order_n"><input type="button" value="生成订单" onclick="buildOrder(parseInt(document.getElementById('order_n').value))">
    <table id="tab1">
    </table>
      

  3.   

    由于我的订单数量是不确定的,所以我吧 id 设为动态获得,比如 $order.getOrderId()
    (这个 id 和我的 name 又属性相同了,我的name也是动态的,会有冲突吗?实际上我这边干脆就不监听了)
      

  4.   

    不是很明白,光看你的描述比较难猜出你想表达的意思。一个对象可以设id和name值相同或不同,只要获取的方法正确就没有影响的。
    <input type="text" id="a" name="a" value="name=a,id=a">
    <input type="text" id="a1" name="b1" value="id=a1,name=b1">
    <script>
    alert(document.getElementById('a').value);//通过id获取
    alert(document.getElementsByName('a')[0].value);//通过name获取alert(document.getElementById('a1').value);//通过id获取
    alert(document.getElementsByName('b1')[0].value);//通过name获取
    </script>
      

  5.   

    “不是很明白,光看你的描述比较难猜出你想表达的意思。”
    ******************************************我知道了,其实我只要在不同的订单里设置不同的 id 值就可以了。由于我使用 click framework 做的(也是现学的),可能有的地方没表达清楚。用click 可以在页面中设置变量,我在循环里设置一个自增长变量作 id 值就可以了不过,还是应该感谢你,花了你这么多时间谢谢!!
      

  6.   

    yiran5467(依苒)由于刚开始作页面,能不能推荐一些相关书(电子版会比较方便,老是在电脑前翻书不太好 :) ),或者论坛之类的谢谢
      

  7.   

    这个论坛就很牛啊,到处都是老师,我也是每天来这里学学。http://www.elook.net.cn/handbook/dhtml/index.html 我一般查这个手册,知道有这么个对象、属性、方法什么的,然后再去网上搜些实例来消化。
      

  8.   

    Click the link to solve your problem.Good luck!