thank you,但是不明确,谁能给出代码

解决方案 »

  1.   

    用XML吧
    <script language="javascript">
    var xmlID = "xmlcmbtree";
    var cmbPrefix = "xmlcmb";
    var nMaxLevel = 3;
    var tblName = "tbl";
    function CreateList(nLevel)
    {
      var doc = document.all(xmlID).documentElement;  var nodes, nIndex, node;
      nodes = doc.childNodes;
      for (var i=1; i < nLevel;i++)
      {
    nIndex = document.all(cmbPrefix + i).selectedIndex;
    node = nodes[nIndex];
    nodes = node.childNodes;
      }    var cmb = document.all(cmbPrefix + nLevel);
      if (!cmb)
      {
        cmb = document.createElement("SELECT");
        cmb.id = cmbPrefix + nLevel;
        cmb.onchange = new Function("ChangeSelection(" + nLevel + ")");  //document.body.appendChild(cmb);
        var cell = document.all(tblName).rows[1].insertCell();
        cell.appendChild(cmb);    
        cell = document.all(tblName).rows[0].insertCell();    var label = document.createElement("SPAN");
        label.style.fontWeight = "bold";
        label.style.color = "red";
        label.innerHTML = nodes[0].nodeName + ":";    cell.appendChild(label);  // document.body.insertBefore(label,cmb)  }    cmb.options.length = 0;    for (i=0; i < nodes.length;i++)
      {
    var opt = new Option(nodes[i].getAttribute("text"),nodes[i].getAttribute("value"));
    cmb.options.add(opt);
      }  ChangeSelection(nLevel);
    }function ChangeSelection(nLevel)
    {
      if (nLevel < nMaxLevel)
      CreateList(nLevel+1);
    }</script>
    <body onload="CreateList(1);">
    <!-- 用JSP生成就可以了 !-->
    <xml id="xmlcmbtree">
    <country>
    <province text="Jiang Su" value="Jiang Su">
      <city text="Nan Jing" value="Nan Jing">
    <street text="Xin Jie Kou" value="Xin Jie Kou" />
    <street text="Dong Jia Xiang" value="Dong Jia Xiang" />
      </city>
      <city text="Su Zhou" value="Su Zhou">
    <street text="Guan Qian Jie" value="Guan Qian Jie" />
    <street text="Re Min Lu" value="Re Min Lu" />
      </city>
    </province>
    <province text="Beijing" value="Beijing">
      <city text="Beijing" value="Beijing">
    <street text="Xin Jie Kou" value="Xin Jie Kou" />
    <street text="Si Huan Lu" value="Si Huan Lu" />
    <street text="Xue Yuan Lu" value="Xue Yuan Lu" />
      </city>
    </province>
    <province text="Hei Bei" value="Hei Bei">
      <city text="Shi Jia Zhuang" value="Shi Jia Zhuang">
    <street text="Ren Min Lu" value="Ren Min Lu" />
      </city>
    </province>
    </country>
    </xml>
    <table id="tbl" border="1" cellspacing="0" cellpadding="0"">
    <tr></tr>
    <tr></tr>
    </table>
    </body>
      

  2.   

    每次用JSP读取数据生成动态的XML?---根据不同选择生成还是预先就生成所有选项
    可惜我对XML了解甚少,还有什么好方法
    go on
      

  3.   

    用XML的做法是你可以一开始就读数据库把所有的可能的需要的记录都取出来生成一个XML,然后每次选择只需读这个XML即可,如果你的数据量不大,(你用下拉列表估计也不会有很多数据的),这个还是管用的。如果数据量大或者变化频繁,就还是每次取数据库吧,你选择第一个下拉列表,然后触发提交事件然后刷新本页,用提交的第一个列表值取数据库记录构成第二个列表等等……。事件处理是 <select ..... onChange="loadNewPage()">function loadNewPage(){
    .....
    form1.submit();
    ....
    }
      

  4.   

    使用这种方法试试:
    页面做两个框架:fram1,fram2
    在fram1里放页面,fram2里放脚本并且不可见
    在fram1里的三个列表框使用用<div id=listn>
    当fram1里的第一个列表框改变内容时在fram2里执行一个list.asp文件,
    list.asp执行查询后返回第二个列表框中的数据,使用js把这些数据放在<div id=list2>中,使用的方法可以是parent.fram1.document.list2.innerHTML=.....
    或者使用删除添加列表项既可注意如果list1中改变数据,要查询两次,一次是list2中的数据改变,一次是list2中给定的默认值后list3中的数据改变。
      

  5.   

    zhpfaff说的比较可行,只是比较麻烦如果数据库中数据较多,一次查出放在隐藏frame里或者XML文件都不大可取。
    或许可以有实现同样功能的其他变通方法,比如用多个页面,提供radio按钮逐级提交。哪位有好的意见,
    请提出。同时我在Java版也开了一贴,http://www.csdn.net/expert/topic/716/716963.xml?temp=.8211328
    200分征求满意答案,多谢!
      

  6.   

    http://www.csdn.net/Expert/TopicView1.asp?id=723099
      

  7.   

    秋水无恨,非常感谢你的帮助。我已经想了别的方法。不过你的建议仍很有用。
    你到这个帖子拿分。
    等你看到了,我再结贴。
    http://www.csdn.net/expert/topic/716/716963.xml?temp=.8211328