1)用户选择上一级之后下一级自动转到对应的多项。
*参考我的"netBook"左边菜单2)数据如果是onChange="form.submit()";那么会把数据提交到处理。但这样会刷新页面,如何才能不刷新本页来取得数据;
*可用xmlhttp或隐藏iframe或<script>标记3)下拉项是由数据库中的数据生成的。有可能会增加,修改,减少选项;
*本来就是4)如果可能,能否级别无限增加;
*只要数据组织合理5)有可能有两种生成办法:
  1取得所有的数据之后生成js;
*  适用于数据变化不频繁的场合,独立的js可减少重复传输的时间  2实时取得数据来生成js;
*  适用于数据变化频繁的场合*  不可利用浏览器缓存时,没有太好的办法

解决方案 »

  1.   

    用javascript的document.write可以做到不刷新,雷傲论坛里选择地区的联动就是这样的,我正在研究,具体的还没有搞太懂,哈~~~
      

  2.   

    看大家都来那么一句  接分..........  配合大家,我也接两分别舍不得啊...\\
    =========================================  将数据库内菜单数据导入JS数组中(至少是个二维的...)
      然后通过操作这个数组组织菜单...  就是你说的第一种可能吧,不建议使用实时的,就好比CSDN这个论坛,我要是断一下线点了大类的,扩展失败后,我非要F5一下才能再将这个子菜单扩展开,太不爽了...
      

  3.   

    这个是一个三关联表单的代码。你用PHP动态生成表单内容应该没问题!<FORM name="isc">
    <table border="0" cellspacing="0" cellpadding="0">
      <tr align="center"> 
        <td nowrap height="11"> &nbsp;<select name="example" size="1" onChange="redirect(this.options.selectedIndex)">
    <option selected>---Select1-------------</option>
    <option>Webmaster Sites</option>
    <option>News Sites</option>
    </select><select name="stage2" size="1" onChange="redirect1(this.options.selectedIndex)">
    <option value=" " selected> </option>
    <option value=" " selected>---Select2--------------</option>
    <option value=" " selected>---Select2--------------</option>
    </select><select name="stage3" size="1" onChange="redirect2(this.options.selectedIndex)">
    <option value=" " selected> </option>
    <option value=" " selected>---Select3----------------</option>
    <option value=" " selected>---Select3----------------</option>
    </select><script>
    <!--/*
    Triple Combo Script Credit
    By Hamid Cheheltani/ Website Abstraction (http://www.wsabstract.com)
    Visit http://wsabstract.com for this and over 400+ other scripts
    */var groups=document.isc.example.options.length
    var group=new Array(groups)
    for (i=0; i<groups; i++)
    group[i]=new Array()group[0][0]=new Option("---Select2---"," ");group[1][0]=new Option("Now Select This One"," ");
    group[1][1]=new Option("JavaScript","47");
    group[1][2]=new Option("DHTML","46");
    group[1][3]=new Option("CGI","45");group[2][0]=new Option("Now Select This One"," ");
    group[2][1]=new Option("General News","115");
    group[2][2]=new Option("Technology News","116"); var temp=document.isc.stage2
    function redirect(x){
    for (m=temp.options.length-1;m>0;m--)
    temp.options[m]=null
    for (i=0;i<group[x].length;i++){
    temp.options[i]=new Option(group[x][i].text,group[x][i].value)
    }
    temp.options[0].selected=true
    redirect1(0)
    }var secondGroups=document.isc.stage2.options.length
    var secondGroup=new Array(groups)
    for (i=0; i<groups; i++)  {
    secondGroup[i]=new Array(group[i].length)
    for (j=0; j<group[i].length; j++)  {
    secondGroup[i][j]=new Array()  }}secondGroup[0][0][0]=new Option("---Select 3---"," ");
    secondGroup[1][0][0]=new Option("---Select 3---"," ");
    secondGroup[1][1][0]=new Option("Now Select This One"," ");
    secondGroup[1][1][1]=new Option("Website Abstraction","http://wsabstract.com");
    secondGroup[1][1][2]=new Option("JavaScript for the non programmer","http://webteacher.com/javascript/");
    secondGroup[1][1][3]=new Option("Java-Scripts.net","http://java-scripts.net");secondGroup[1][2][0]=new Option("Now Select This One"," ");
    secondGroup[1][2][1]=new Option("Dynamic Drive","http://www.dynamicdrive.com");
    secondGroup[1][2][2]=new Option("Beginner\'s Guide to DHTML","http://www.geocities.com/ResearchTriangle/Facility/4490/");
    secondGroup[1][2][3]=new Option("Web Coder","http://webcoder.com/");secondGroup[1][3][0]=new Option("Now Select This One"," ");
    secondGroup[1][3][1]=new Option("CGI Resources","http://www.cgi-resources.com");
    secondGroup[1][3][2]=new Option("Ada\'s Intro to CGI","http://adashimar.hypermart.net/");secondGroup[2][0][0]=new Option("---Select 3---"," ");
    secondGroup[2][1][0]=new Option("Now Select This One"," ");
    secondGroup[2][1][1]=new Option("CNN","http://www.cnn.com");
    secondGroup[2][1][2]=new Option("MSNBC","http://www.msnbc.com");
    secondGroup[2][1][3]=new Option("ABC News","http://www.abcnews.com");secondGroup[2][2][0]=new Option("Now Select A Page"," ");
    secondGroup[2][2][1]=new Option("News.com","http://www.news.com");
    secondGroup[2][2][2]=new Option("Wired","http://www.wired.com");var temp1=document.isc.stage3
    function redirect1(y){
    for (m=temp1.options.length-1;m>0;m--)
    temp1.options[m]=null
    for (i=0;i<secondGroup[document.isc.example.options.selectedIndex][y].length;i++){
    temp1.options[i]=new Option(secondGroup[document.isc.example.options.selectedIndex][y][i].text,secondGroup[document.isc.example.options.selectedIndex][y][i].value)
    }
    temp1.options[0].selected=true
    }function redirect2(z){
    window.location=temp1[z].value
    }//-->
    </script> </td>
      </tr>
    </table>
    </FORM><p><font face="arial" size="-2">This free script provided by</font><br>
    <font face="arial, helvetica" size="-2"><a href="http://wsabstract.com">Website
    Abstraction</a></font></p>
      

  4.   

    我接分!!!
    唠叨大哥的netBook的代码在哪?我要看!!!
      

  5.   

    to  allkill(傲气游) 
    一个多级的菜单是很容易写的,主要是js的生成有点烦,因为我习惯于模板方式的开发,所以代码和美工是分开的,因此对于要生成js的多个选项,我没有试过,个人觉得难度挺大,因为js中的代码行不知道用块能不能生成,没有试过。不瞒你说,我是为了要做一个产品分类表,这个分类比较细,共有563条记录。因此提出这个问题。望高手指教。
      

  6.   

    php不是什么都方便的
    结合js写效果好很多的
    我的代码部分和美工也是分开开发的
      

  7.   

    to ustb(偶然)用块可以实现的。我用块很轻松就实现了双关联表单。估计三关联应该也不难吧!