一种在Select1的OnChange事件中重新提交[window.location='selfurl?Category='+this.value].根据参数选Select2.一种一次提取存放到<input type=text id=SelectArray value="<%=值[由分割符分开]%>">
在Select1的OnChange事件中利用JavaScript的String.spli('分割符')返回的数组填充Select2

解决方案 »

  1.   

    你可以这样来做,做两个form,第一个select写上onChange=submit()
    再根据提交的内容查询第二个select所要的值,同时,将第一个选择的值放在第二个form的hidden中一起提交第二个form
    这也是个jsp与js结合的例子。
      

  2.   

    找一个这样得网站,例如51JOb的,然后把它那地方的JS代码COpy过来,改改就差不多了。
      

  3.   

    都读出来放在一个javascript二维数组中
      

  4.   

    http://fason.nease.net/samples/bigarea/
      

  5.   

    都读出来放在一个javascript二维数组中
     我现在做的有关菜单的关联的问题就是采用的这种方法,而且我在有些地方
    看到,如果你频繁的查询数据库的话会导致速度很慢的问题,所以你的菜单可以
    通过js来实现,我现在都做到了四级菜单关联,不过就是数据比较统一,不是在数据库
    中读出的,但是我觉得一样,如果把数组中的值用数据库的值来代替的话就可以了!
    你可以看看这个,(你可以把js中的数组数据换成你在数据库中得到的数据)。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html> 
    <head> 
    <title>menu</title> 
    <SCRIPT language=JavaScript> 
    //&acute;&Euml;&para;&Icirc;&iquest;&Eacute;&Oacute;&Atilde;&AElig;&auml;&Euml;&ucirc;&Auml;&Uacute;&Egrave;&Yacute;&Igrave;&aelig;&acute;ú&pound;&not;&Ocirc;&Yacute;&Ecirc;±&Oacute;&Atilde;&Ograve;&raquo;&cedil;&ouml;9X9&sup3;&Euml;·¨±í&micro;&Auml;&para;&thorn;&Icirc;&not;&Ecirc;&yacute;×é&Agrave;&acute;&Igrave;&icirc;&sup3;&auml;   var dataArray = new Array(9);        // &sup2;ú&Eacute;ú&sup3;&Euml;·¨±í&micro;&Auml;&Iacute;&acirc;&iquest;&Ccedil;? 
        for (var j = 0; j < dataArray.length; j++)// ×&frac14;±&cedil;&Oacute;&Atilde;&ETH;&ETH;&frac12;&oslash;&ETH;&ETH;&Igrave;&icirc;&sup3;&auml;&iexcl;&pound; 
      { 
         var aRow = new Array(9);       // &acute;&acute;&frac12;¨&Ograve;&raquo;&ETH;&ETH;&iexcl;&pound; 
           for (var i = 0; i < aRow.length; i++)// ×&frac14;±&cedil;&Igrave;&icirc;&sup3;&auml;&Otilde;&acirc;&Ograve;&raquo;&ETH;&ETH;&iexcl;&pound; 
      { 
            aRow[i] = (i + " times " + j + " = " + i*j);  // &frac14;&AElig;&Euml;&atilde;&sup2;&cent;&acute;&aelig;&acute;&cent;&Ouml;&micro;&iexcl;&pound; 
            } 
    dataArray[j] = aRow;              // &frac12;&laquo;&Ograve;&Ntilde;&Igrave;&icirc;&sup3;&auml;&micro;&Auml;&ETH;&ETH;·&Aring;&Egrave;&euml;±í&Ouml;&ETH;&iexcl;&pound;    } 
    var xbound=9; 
    var ybound=9; 
    function fill(SelectCtrl, itemArray)      //&Igrave;&icirc;&sup3;&auml;&Iuml;&Acirc;&Agrave;&shy;&micro;&yen; 

    var i; 
    for (i = SelectCtrl.options.length; i >= 0; i--) {   //&Ccedil;&aring;&iquest;&Otilde;&Ntilde;&iexcl;&Iuml;&icirc; 
       SelectCtrl.options[i] = null; } 
    if (itemArray != null) 

       for (i = 0; i < itemArray.length; i++) 
         { 
         SelectCtrl.options[i] = new Option(itemArray[i]); //&acute;&acute;&frac12;¨&Ntilde;&iexcl;&Iuml;&icirc;&para;&Ocirc;&Iuml;ó 
         if (itemArray[i] != null) 
          SelectCtrl.options[i].value = itemArray[i];   // &cedil;&oslash;&Ntilde;&iexcl;&Iuml;&icirc;&cedil;&sup3;&Ouml;&micro; 
         }  
      } 
      SelectCtrl.options[0].selected = true;          //&Egrave;&Atilde;&micro;&Uacute;&Ograve;&raquo;&cedil;&ouml;&Ntilde;&iexcl;&Iuml;&icirc;&sup3;&Eacute;&Icirc;&ordf;&Auml;&not;&Egrave;&Iuml;&Ntilde;&iexcl;&Iuml;&icirc; 
     }  
      
      
    function fillMain(SelectCtrl)                 // &Igrave;&icirc;&sup3;&auml;&Ouml;÷&Iuml;&Acirc;&Agrave;&shy;&micro;&yen; 
      {var i; 
       mainArray= new Array(ybound); 
    mainArray[0]="Please select!"             //&acute;&acute;&frac12;¨&Ograve;&raquo;&cedil;&ouml;&Ograve;&raquo;&Icirc;&not;&Ecirc;&yacute;×é&pound;&not;&Oacute;&Atilde;&Ograve;&Ocirc;×°&para;&thorn;&Icirc;&not;&Ecirc;&yacute;×é     for (i=0;i < ybound;i++)               //&micro;&Auml;&Ecirc;×&Aacute;&ETH;&Ouml;&micro; 
       mainArray[i+1]=dataArray[i][0]; 
        fill(SelectCtrl, mainArray); 
      }  function fillSub(SelectCtrl,index)              //&Igrave;&icirc;&sup3;&auml;×&Oacute;&Iuml;&Acirc;&Agrave;&shy;&micro;&yen; 
      {var i; 
      if (index<0)                         //&micro;±index<0&Ecirc;±&acute;&acute;&frac12;¨&Ograve;&raquo;&cedil;&ouml; 
      { subArray= new Array(2); 
       subArray[0]="<--------->";                 //&Ouml;&raquo;&ordm;&not;&Oacute;&ETH;&para;&thorn;&cedil;&ouml;&Ocirc;&ordf;&Euml;&Oslash;&micro;&Auml;&Ecirc;&yacute;×é 
    subArray[1]=""; 

    else 

      subArray= new Array(xbound-1);                
      for(i=0;i < xbound-1;i++) 
      subArray[i]=dataArray[index][i+1];              //&Oacute;&Atilde;&para;&thorn;&Icirc;&not;&Ecirc;&yacute;×é&micro;&Auml;&AElig;&auml;&Euml;&ucirc;&Aacute;&ETH;&Ocirc;&ordf;&Euml;&Oslash; 
      }                              //&Igrave;&icirc;&sup3;&auml;&ETH;&Acirc;&acute;&acute;&frac12;¨&micro;&Auml;&Ograve;&raquo;&Icirc;&not;&Ecirc;&yacute;×é 
    fill(SelectCtrl,subArray); 
         

    </script> 
    </head> 
    <!------&micro;±×°&Ocirc;&Oslash;&acute;&Euml;&Ograve;&sup3;&Atilde;&aelig;&Ecirc;±&pound;&not;&micro;÷&Oacute;&Atilde;fillMain&ordm;&macr;&Ecirc;&yacute;-----------> 
    <body onLoad="fillMain(document.form1.MainMenu );">      
    <FORM name=form1 > 
          <!---------&micro;±&Ouml;÷&Iuml;&Acirc;&Agrave;&shy;&micro;&yen;&Ntilde;&iexcl;&Iuml;&icirc;&cedil;&Auml;±&auml;&Ecirc;±&pound;&not;&micro;÷&Oacute;&Atilde;fillSub&ordm;&macr;&Ecirc;&yacute;--------> 
          <DIV align=center><SELECT size=1 
          onchange="fillSub(this.form.SubMenu, this.selectedIndex-1);" 
          name=MainMenu> <option></option><option></option> 
           </SELECT> <SELECT  
           size=1 name=SubMenu> <option><--------------></option><option></option></SELECT>  
          </DIV></FORM> </body> 
    </html>你可以试试改写在javascript中一些地方使它满足你的要求!
      

  6.   

    上面的乱码重新贴一次!<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html> 
    <head> 
    <title>menu</title> 
    <SCRIPT language=JavaScript> 
    //此段可用其他内容替代,暂时用一个9X9乘法表的二维数组来填充   var dataArray = new Array(9);        // 产生乘法表的外壳? 
        for (var j = 0; j < dataArray.length; j++)// 准备用行进行填充。 
      { 
         var aRow = new Array(9);       // 创建一行。 
           for (var i = 0; i < aRow.length; i++)// 准备填充这一行。 
      { 
            aRow[i] = (i + " times " + j + " = " + i*j);  // 计算并存储值。 
            } 
    dataArray[j] = aRow;              // 将已填充的行放入表中。    } 
    var xbound=9; 
    var ybound=9; 
    function fill(SelectCtrl, itemArray)      //填充下拉单 

    var i; 
    for (i = SelectCtrl.options.length; i >= 0; i--) {   //清空选项 
       SelectCtrl.options[i] = null; } 
    if (itemArray != null) 

       for (i = 0; i < itemArray.length; i++) 
         { 
         SelectCtrl.options[i] = new Option(itemArray[i]); //创建选项对象 
         if (itemArray[i] != null) 
          SelectCtrl.options[i].value = itemArray[i];   // 给选项赋值 
         }  
      } 
      SelectCtrl.options[0].selected = true;          //让第一个选项成为默认选项 
     }  
      
      
    function fillMain(SelectCtrl)                 // 填充主下拉单 
      {var i; 
       mainArray= new Array(ybound); 
    mainArray[0]="Please select!"             //创建一个一维数组,用以装二维数组     for (i=0;i < ybound;i++)               //的首列值 
       mainArray[i+1]=dataArray[i][0]; 
        fill(SelectCtrl, mainArray); 
      }  function fillSub(SelectCtrl,index)              //填充子下拉单 
      {var i; 
      if (index<0)                         //当index<0时创建一个 
      { subArray= new Array(2); 
       subArray[0]="<--------->";                 //只含有二个元素的数组 
    subArray[1]=""; 

    else 

      subArray= new Array(xbound-1);                
      for(i=0;i < xbound-1;i++) 
      subArray[i]=dataArray[index][i+1];              //用二维数组的其他列元素 
      }                              //填充新创建的一维数组 
    fill(SelectCtrl,subArray); 
         

    </script> 
    </head> 
    <!------当装载此页面时,调用fillMain函数-----------> 
    <body onLoad="fillMain(document.form1.MainMenu );">      
    <FORM name=form1 > 
          <!---------当主下拉单选项改变时,调用fillSub函数--------> 
          <DIV align=center><SELECT size=1 
          onchange="fillSub(this.form.SubMenu, this.selectedIndex-1);" 
          name=MainMenu> <option></option><option></option> 
           </SELECT> <SELECT  
           size=1 name=SubMenu> <option><--------------></option><option></option></SELECT>  
          </DIV></FORM> </body> 
    </html>
      

  7.   

    请问如果javascript里面有一个变量的值需要在jsp代码中用到,如何传递呢?具体说就是通过javascript得到选中的列表框的value值,然后传递给jsp代码中的一个变量,用来做调用数据库的参数。请问如何实现呢?