详细问题:
一个表格有2列
       部门下拉菜单               人员下拉菜单
       部门下拉菜单               人员下拉菜单
       部门下拉菜单               人员下拉菜单
       部门下拉菜单               人员下拉菜单
       部门下拉菜单               人员下拉菜单
       部门下拉菜单               人员下拉菜单
       部门下拉菜单               人员下拉菜单其中部门下拉菜单名称都是depts    人员下拉菜单名称都是 men 改变某个部门下拉菜单时 相应的改变人员下拉菜单!

解决方案 »

  1.   

    <script language="JavaScript">
    var subcat = new Array(); 
    subcat[0] = new Array("广?","服?中心","服?中心","BG01","06","0601");  
    subcat[1] = new Array("河北","前台接待","前台接待","BG02","06","0602");  
    subcat[2] = new Array("河南","??部","??部","BK02","12","1202");  
    subcat[3] = new Array("湖北","???算部","???算部","BK01","12","1201"); function changeselect1(locationid)
    {
    document.form1.SDepart.length = 0;
    for (i=0; i<subcat.length; i++)
    {
      if (subcat[i][0] == locationid)
    {
           var op = new Option(subcat[i][1], subcat[i][2]);
           op.id = subcat[i][1];
           document.form1.SDepart.options[document.form1.SDepart.length] = op; //此行生成新的Option
    }
    }
    }
    </script><form name=form1>
      <select name="BDepart" onChange="changeselect1(this.value)">
        <option value="广?">广?</option>
        <option value="河北">河北</option>
        <option value="河北">河南</option>
        <option value="河北">湖南</option>
      </select>
      <select name=SDepart></select>
    </form>
    <input type=button value=innerHTML onclick="alert(document.form1.SDepart.innerHTML)">
      

  2.   

    <script language="JavaScript">
    var subcat = new Array(); 
    subcat[0] = new Array("广?","服?中心","服?中心","BG01","06","0601");  
    subcat[1] = new Array("河北","前台接待","前台接待","BG02","06","0602");  
    subcat[2] = new Array("河南","??部","??部","BK02","12","1202");  
    subcat[3] = new Array("湖北","???算部","???算部","BK01","12","1201"); function changeselect1(locationid)
    {
    document.form1.SDepart.length = 0;
    for (i=0; i<subcat.length; i++)
    {
      if (subcat[i][0] == locationid)
    {
           var op = new Option(subcat[i][1], subcat[i][2]);
           op.id = subcat[i][1];
           document.form1.SDepart.options[document.form1.SDepart.length] = op; //此行生成新的Option
    }
    }
    }
    </script><form name=form1>
      <select name="BDepart" onChange="changeselect1(this.value)">
        <option value="广?">广?</option>
        <option value="河北">河北</option>
        <option value="河北">河南</option>
        <option value="河北">湖南</option>
      </select>
      <select name=SDepart></select>
    </form>
    <input type=button value=innerHTML onclick="alert(document.form1.SDepart.innerHTML)">
      

  3.   

    楼上不对啊 我不是一般的联动啊
    10个部门的SELECT对应10个人员的SELECT啊
      

  4.   

    问题的关键是怎么取到我所点的部门SELECT是整个控件数组的第几个?
    这个问题帮我搞顶就100分全给了
      

  5.   

    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>新しいページ 1</title>
    </head><body><script language="javascript">
        var memberList = new Array();
        memberList[0] = new Array();
        memberList[1] = new Array();
        memberList[2] = new Array();
        memberList[3] = new Array();
        memberList[4] = new Array();
        memberList[5] = new Array();
        memberList[6] = new Array();
        memberList[7] = new Array();
        memberList[8] = new Array();
        memberList[9] = new Array();
        memberList[0][0] = "1";
        memberList[0][1] = "人员1-1";
        memberList[1][0] = "1";
        memberList[1][1] = "人员1-2";
        memberList[2][0] = "1";
        memberList[2][1] = "人员1-3";
        memberList[3][0] = "2";
        memberList[3][1] = "人员2-1";
        memberList[4][0] = "2";
        memberList[4][1] = "人员2-2";
        memberList[5][0] = "2";
        memberList[5][1] = "人员2-3";
        memberList[6][0] = "3";
        memberList[6][1] = "人员3-1";
        memberList[7][0] = "3";
        memberList[7][1] = "人员3-2";
        memberList[8][0] = "3";
        memberList[8][1] = "人员3-3";    function doChange(i,obj){
            var dept = obj.value;
            var n;
            for(n=document.forms(0).men(i).options.length-1;n>=0;n--){
               document.forms(0).men(i).options.remove(n);
            }
            var opValue = 0;
            for(n=0;n<9;n++){
                if(memberList[n][0]==dept){
                    var oOption = document.createElement("OPTION");
                    document.forms(0).men(i).options.add(oOption);
                    oOption.innerText = memberList[n][1];
                    oOption.value = opValue++;                
                }
            }
        }</script>
    <form method="POST" action="--WEBBOT-SELF--">
      <!--webbot bot="SaveResults" U-File="fpweb:///_private/form_results.txt"
      S-Format="TEXT/CSV" S-Label-Fields="TRUE" -->
      <table border="0" cellpadding="0" cellspacing="0" width="100%">
        <tr>
          <td width="50%"><select size="1" name="depts" onChange="doChange(0,this)">
              <option value="1">部门1</option>
              <option value="2">部门2</option>
              <option value="3">部门3</option>
            </select></td>
          <td width="50%"><select size="1" name="men">
              <option value="1">人员1-1</option>
              <option value="2">人员1-2</option>
              <option value="3">人员1-3</option>
            </select></td>
        </tr>
        <tr>
          <td width="50%"><select size="1" name="depts" onChange="doChange(1,this)">
              <option value="1">部门1
              <option value="2">部门2</option>
              <option value="3">部门3</option>
            </select></td>
          <td width="50%"><select size="1" name="men">
              <option value="1">人员1-1</option>
              <option value="2">人员1-2</option>
              <option value="3">人员1-3</option>
            </select></td>
        </tr>
        <tr>
          <td width="50%"><select size="1" name="depts" onChange="doChange(2,this)">
              <option value="1">部门1
              <option value="2">部门2</option>
              <option value="3">部门3</option>
            </select></td>
          <td width="50%"><select size="1" name="men">
              <option value="1">人员1-1</option>
              <option value="2">人员1-2</option>
              <option value="3">人员1-3</option>
            </select></td>
        </tr>
      </table>
      <p> </p>
    </form></body></html>
      

  6.   

    先谢谢楼上的 问题的关键我的这些控件是动态生成的 我就是要得到doChange(2,this)里的2啊 不能先写死的
      

  7.   

    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>新しいページ 1</title>
    </head><body><script language="javascript">
        var memberList = new Array();
        memberList[0] = new Array();
        memberList[1] = new Array();
        memberList[2] = new Array();
        memberList[3] = new Array();
        memberList[4] = new Array();
        memberList[5] = new Array();
        memberList[6] = new Array();
        memberList[7] = new Array();
        memberList[8] = new Array();
        memberList[9] = new Array();
        memberList[0][0] = "1";
        memberList[0][1] = "人员1-1";
        memberList[1][0] = "1";
        memberList[1][1] = "人员1-2";
        memberList[2][0] = "1";
        memberList[2][1] = "人员1-3";
        memberList[3][0] = "2";
        memberList[3][1] = "人员2-1";
        memberList[4][0] = "2";
        memberList[4][1] = "人员2-2";
        memberList[5][0] = "2";
        memberList[5][1] = "人员2-3";
        memberList[6][0] = "3";
        memberList[6][1] = "人员3-1";
        memberList[7][0] = "3";
        memberList[7][1] = "人员3-2";
        memberList[8][0] = "3";
        memberList[8][1] = "人员3-3";    function doChange(i,obj){
            var dept = obj.value;
            var n;
            for(n=document.forms(0).men(i).options.length-1;n>=0;n--){
               document.forms(0).men(i).options.remove(n);
            }
            var opValue = 0;
            for(n=0;n<9;n++){
                if(memberList[n][0]==dept){
                    var oOption = document.createElement("OPTION");
                    document.forms(0).men(i).options.add(oOption);
                    oOption.innerText = memberList[n][1];
                    oOption.value = opValue++;                
                }
            }
        }</script>
    <form method="POST" action="--WEBBOT-SELF--">
      <!--webbot bot="SaveResults" U-File="fpweb:///_private/form_results.txt"
      S-Format="TEXT/CSV" S-Label-Fields="TRUE" -->
      <table border="0" cellpadding="0" cellspacing="0" width="100%">
    <%
        for(int i=0;i<10;i++){
    %>
        <tr>
          <td width="50%"><select size="1" name="depts" onChange="doChange(<%=i%>,this)">
              <option value="1">部门1</option>
              <option value="2">部门2</option>
              <option value="3">部门3</option>
            </select></td>
          <td width="50%"><select size="1" name="men">
              <option value="1">人员1-1</option>
              <option value="2">人员1-2</option>
              <option value="3">人员1-3</option>
            </select></td>
        </tr>
    <%
    }
    %>
      </table>
      <p> </p>
    </form></body></html>
      

  8.   

    楼上的还是不对啊
    我的情况比较特殊 希望在CHANGE事件里来得到你这的I值 可以吗?
     还有 怎么样可以取到SELECT控件数组的个数?
    比如取 名为depts的SELECT控件有多少个?  不能用FormName.depts.length来取 这个取到的是第一个depts控件的option的个数
      

  9.   

    <script language="javascript">
    var city=new Array();city[1] = new Array("北京市","0","1");city[2] = new Array("上海市","0","2");city[3] = new Array("天津市","0","3");city[4] = new Array("重庆市","0","4");city[5] = new Array("合肥","21","6");city[6] = new Array("芜湖","21","7");city[7] = new Array("马鞍山","21","8");city[8] = new Array("蚌埠","21","10");city[9] = new Array("淮南","21","11");city[10] = new Array("淮北","21","12");city[11] = new Array("铜陵","21","13");city[12] = new Array("安庆","21","14");city[13] = new Array("黄山","21","15");city[14] = new Array("滁州","21","16");city[15] = new Array("阜阳","21","17");city[16] = new Array("宿州","21","18");city[17] = new Array("巢湖","21","19");city[18] = new Array("六安","21","20");city[19] = new Array("毫州","21","21");city[20] = new Array("池州","21","22");city[21] = new Array("宣城","21","23");city[22] = new Array("石家庄市","8","25");city[23] = new Array("唐山市","8","26");......var count=city.length;
    function changelocation(locationid)
        {
        document.all["cityid"].length = 0; 
        var i;
    var found;
        for (i=1;i < count; i++)
            {
                if (city[i][1] == locationid)
                { 
    found=true;
    document.all["cityid"].options[0] = new Option("其它", "388");
        document.all["cityid"].options[document.all["cityid"].length] = new Option(city[i][0], city[i][2]);
                }        
            }
        if(!found){
    document.all["cityid"].options[document.all["cityid"].length] = new Option("---请选择---", "0");
    document.all["showcity"].style.display="none";
    }else{
    document.all["showcity"].style.display="";
    document.all["cityid"].selectedIndex=0;
    }
        }
    function showcity(){
    if(document.all["nocity"].checked){
    document.all["cityid"].style.display="none";
    }else{
    document.all["cityid"].style.display="";
    }
    }
    </script>
      <select name="provinceid" id="proviceid" onChange="changelocation(document.all['proviceid'].options[document.all['proviceid'].selectedIndex].value)">
        <option value="-1">请选择所在地</option>
    <option value="1"  >北京</option><BR><option value="2"  >上海</option><BR><option value="3"  >天津</option><BR><option value="4"  >重庆</option><BR><option value="5"  >台湾</option><BR><option value="6"  >澳门</option><BR><option value="7"  >香港</option><BR><option value="8"  >河北</option><BR><option value="9"  >山西</option><BR><option value="10"  >内蒙古</option><BR><option value="11"  >辽宁</option><BR><option value="12"  >吉林</option><BR><option value="13"  >江苏</option><BR><option value="14"  >浙江</option><BR><option value="15"  >福建</option><BR><option value="16"  >江西</option><BR><option value="17"  >山东</option><BR><option value="18"  >河南</option><BR><option value="19"  >湖北</option><BR><option value="20"  >湖南</option><BR><option value="21"  >安徽</option><BR><option value="22"  >广东</option><BR><option value="23"  >广西</option><BR><option value="24"  >海南</option><BR><option value="25"  >四川</option><BR><option value="26"  >贵州</option><BR><option value="27"  >云南</option><BR><option value="28"  >陕西</option><BR><option value="29"  >甘肃</option><BR><option value="30"  >青海</option><BR><option value="31"  >宁夏</option><BR><option value="32"  >新疆</option><BR><option value="33"  >西藏</option><BR><option value="34"  >东亚</option><BR><option value="35"  >西亚</option><BR><option value="36"  >北美</option><BR><option value="37"  >南美</option><BR><option value="38"  >欧洲</option><BR><option value="39"  >非洲</option><BR><option value="40"  >大洋州</option><BR>
      </select>
      <label id="showcity"  >
      <select name="cityid" id="cityid">
       <input name="nocity" type="checkbox" value="1"  onClick="showcity()">忽略子级<script language='javascript'>showcity();</script>
      </select>
      </label>
    <script language="javascript">
    changelocation(document.all["proviceid"].options[document.all["proviceid"].selectedIndex].value);
    </script>
      

  10.   

    for (j=0;j<thisForm.item("Bu"+i).length;j++)
    {
    if (thisForm.item("dept"+i)(j).uniqueID == control.uniqueID) {break;}
    }

    controlToPopulate = thisForm.item("pname"+i)(j);
    try
    {
    var tempq=controlToPopulate.options.length
    }
    catch(e)
    {
    controlToPopulate = thisForm.item("pname"+i);
    }
    我自己搞定了 把这段加到CHANGE事件里 thisForm.item("Bu"+i)是我加的一个辅助的HIDDEN控件
    通过FOR循环来得到我点的是哪个  uniqueID只有动态添加的控件才有这个属性 
    TRY和CATCH来判断控件是单独的一个还是复数个(即数组的情况)(0个的情况不可能触发change事件所以不考虑)