又是联动问题
如:下拉框1内容是
    1      分红
    2      万能    数据表  tbl_xx字段如下
    id    nameType
     1      a
     2      b
     3      a
     4      b
 现在如何选择下拉框1中的“分红“ 把数据表中的nameType='a'的值赋予下拉框2,
选择“万能”把把数据表中的nameType='b'的值赋予下拉框2,<select name="t1" id="t1" onChange="changelocation(document.form1.t1.options[document.form1.t1.selectedIndex].value)">
<option selected value="">选择内容</option>
<option value="1">分红</option>
<option value="2">万能</option>
</select><select name="a1" id="a1" style="width:100">
<option selected value="">选择类型</option>
</select><%
dim count
set rs=server.createobject("adodb.recordset")
sql="select * from tbl_xx"
rs.open sql,connstr,1,1%>
<script language="JavaScript">
var onecount;
onecount=0;
subcat = new Array();
        <%
        count = 0
        do while not rs.eof 
        %>
subcat[<%=count%>] = new Array("<%= trim(rs("newtype"))%>","<%= trim(rs("id"))%>");
        <%
        count = count + 1
        rs.movenext
        loop
        rs.close
        %>
onecount=<%=count%>;function changelocation(locationid)
    {
    document.form1.a1.length = 0; 
    var locationid=locationid;
    var i;
    for (i=0;i < onecount; i++)
        {
            if (subcat[i][1] == locationid)
            { 
                document.form1.a1.options[document.form1.a1.length] = new Option(subcat[i][1], subcat[i][0]);
            }        
        }
        
    }    
</script>

解决方案 »

  1.   

    你第二个select中的数据是从后台读的还是从前台可以写的
      

  2.   

    zdmaster:你好,你的方法我试过了,可是不管用。因为在你拿select * from tbl_xx这个数据库后,都没有条件来对应第一个下拉例表的内容呀。
    举个例吧:有这样一个数据库,数据库名为WEBAccess
    WEBAPP   WEBASP 
    ---------------
      2        22
      2        33
      3        44
      3        33
      4        55
    现在我有两个下拉例表,第一个就是:
    <select name="t1" id="t1">
    <option selected value="">选择内容</option>
       <%strSQL = "Select distinct WEBAPP from WEBAccess order by WEBAPP"
         rsASP.Open strSQL, Conn
    while not rsASP.EOF%>
    <option value="<%=rsASP("WEBAPP")%>"><%=rsASP("WEBAPP")%></option>
    <%rsASP.movenext
    wend%>
    </select>
    第二个是:<select name="t1" id="t1">
                    <option selected value="">选择内容</option>
              </select>而现在我要做的就是,当第一个下拉例表中选择一项时,在第二个下拉例表中,要显示出这个表里相对应的WEBASP字段的内容。
      

  3.   

    不刷新页面还要从数据库中取?
    估计要用iframe了。
    或是事先存在静态结构里。
    或是xmlhttp
    :_)
      

  4.   

    在页面中放置隐藏的Iframe对象,从数据库中取得数据后可以实现页面局部刷新
      

  5.   

    不刷新页面的话,可以考虑一次把数据全部取出来,事先用不到的先存起来。我这里有个没和数据库连接的。<html>
    <head>
    <title></title><script language="javascript">function ToParent()
    {
    if(form.checked_person.options.length <=0 )
    {
    alert("当前select里没有值");
    return;
    }
    if(window.opener)
    {
    for(var i = 0 ; i < form.checked_person.options.length ; i ++)
    {
    var value = form.checked_person.options[i].innerText ;
    window.opener.AddSelectItem(value);
    }
    }
    window.close();
    }function leftmov(){
    tempTotal=0;
    for(t=0;t<form.all_person.length;t++)
    if(form.all_person.options[t].selected)
    tempTotal++;
    if(tempTotal==0){
    alert("您没有选择!");
    return false;
    }
    i=0;
    while(i<form.all_person.length){
    if(form.all_person.options[i].selected){
    var TempOption  = new Option(form.all_person.options[i].text,form.all_person.options[i].value);
    form.checked_person.add(TempOption);
    form.all_person.remove(i);
    }
    i++;
    }
    }
    function rightmov(){
    var tempTotal=0;
    for(t=0;t<form.checked_person.length;t++)
    if(form.checked_person.options[t].selected)
    tempTotal++;
    if(tempTotal==0){
    alert("您没有选择");
    return false;
    }
    i=0;
    while(i<form.checked_person.length){
    if(form.checked_person.options[i].selected){
    var TempOption  = new Option(form.checked_person.options[i].text,form.checked_person.options[i].value);
    form.all_person.add(TempOption);
    form.checked_person.remove(i);
    }
    i++;
    }
    }
    function sort()
    {
    if(form.sel_name.options[form.sel_name.selectedIndex].text=="人员")form.all_person.outerHTML="<select id=all_person size=5 style=background-color:white;width:140px;border:1px solid #999999;color:#666666;><option value=东方不败>东方不败</option><option value=永远不败>永远不败</option></select>"
    if(form.sel_name.options[form.sel_name.selectedIndex].text=="角色")form.all_person.outerHTML="<select id=all_person size=5 style=background-color:white;width:140px;border:1px solid #999999;color:#666666;><option value=浏览者>浏览者</option><option value=操作者>操作者</option></select>"
    if(form.sel_name.options[form.sel_name.selectedIndex].text=="部门")form.all_person.outerHTML="<select id=all_person size=5 style=background-color:white;width:140px;border:1px solid #999999;color:#666666;><option value=软件部>软件部</option><option value=财务部>财务部</option></select>"
    if(form.sel_name.options[form.sel_name.selectedIndex].text=="职位")form.all_person.outerHTML="<select id=all_person size=5 style=background-color:white;width:140px;border:1px solid #999999;color:#666666;><option value=经理>经理</option><option value=员工>员工</option></select>"
    }
    sort(all_person)
    </script>
    </head>
    <body>
    <form action="" name="form" id="form">
    <table width="100%" cellspacing="0" cellpadding="0" border="1">
    <tr height="36"><td colspan="3">
    <select name="sel_name" size="1" style="background-color:white;width:140px;border:1px solid #999999;color:#666666;" onchange="sort()">
    <option value="1">人员</option>
    <option value="2">角色</option>
    <option value="3">部门</option>
    <option value="4">职位</option>
    </select></td></tr>
    <tr height="96">
    <td width="45%" align="center"><select size="5" id="all_person" name="all_person" style="background-color:white;width:140px;border:1px solid #999999;color:#666666;"><option value="东方不败">东方不败</option><option value="永远不败">永远不败</option></select></td>
    <td align="center">
    <input type="button" name="left" value="->" onclick="leftmov()"><br>
    <input type="button" name="right" value="<-" onclick="rightmov()"><br>
    </td>
    <td width="45%" align="center"><select size="5" id="checked_person" name="checked_person" cols="20" style="background-color:white;width:140px;border:1px solid #999999;color:#666666;"></select></td>
    </tr>
    <tr><td align="center" colspan="3"><input type="button" value="确定" name="press" onclick="ToParent()"></td></tr>
    </table>
    <form>
    </body>
    </html>
      

  6.   

    用XMLHTTP实现的.select.asp<script language="vbscript">
    Function bytes2BSTR(vIn)
    Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode
    strReturn = ""
    For i = 1 To LenB(vIn)
    ThisCharCode = AscB(MidB(vIn,i,1))
    If ThisCharCode < &H80 Then
    strReturn = strReturn & Chr(ThisCharCode)
    Else
    NextCharCode = AscB(MidB(vIn,i+1,1))
    strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
    i = i + 1
    End If
    Next
    bytes2BSTR = strReturn  
    End Function
    </script>
    <script language="JavaScript">
    /* 
     * 思路:通过XMLHTTP发出请求返回数据.再对数据进行处理.
     * XMLHTTP返回的格式是"字符1,字符2,字符3".再到客户端分析.构建Select
     * author:wanghr100(灰豆宝宝.net)
     * update:2004-5-14 15:01
     */
    function getData(str)
    {
        //通过XMLHTTP发出请求返回数据.
        var oBao = new ActiveXObject("Microsoft.XMLHTTP");
        oBao.open("POST","demo.asp?t1="+str,false);
        oBao.send();
        sdata = bytes2BSTR(oBao.ResponseBody);
        //alert(sdata)
        Javascript:buildSel(sdata,document.all.t2);
    }
    function buildSel(str,sel)
    {
        //接收到数据,构建Select,先清除原来的信息.
    sel.options.length=1;
        var arrstr = new Array();
        arrstr = str.split(",");
        for(var i=0;i<arrstr.length;i++)
        {
            sel.options[sel.options.length]=new Option(arrstr[i],arrstr[i])
        }
    }
    </script>
    <!--#include file="conn.asp"-->
    <select name="t1" id="t1" OnChange="JavaScript:getData(this.value)">
    <option selected value="">选择内容</option>
    <%
    strSQL = "Select distinct WEBAPP from WEBAccess order by WEBAPP"
    set rsASP = Server.CreateObject("ADODB.Recordset")
         rsASP.Open strSQL, conn
    while not rsASP.EOF%>
    <option value="<%=rsASP("WEBAPP")%>"><%=rsASP("WEBAPP")%></option>
    <%rsASP.movenext
    wend%>
    </select>
    第二个是:<select name="t2" id="t2">
                    <option selected value="">选择内容</option>
              </select>
    demo.asp<!--#include file="conn.asp"-->
    <%
    t1=Request("t1")
    strSQL = "Select distinct WEBASP from WEBAccess where WEBAPP='"&t1&"'"
    set rs = conn.Execute(strSQL)
    outstr = ""
    set rsASP = Server.CreateObject("ADODB.Recordset")
    rsASP.Open strSQL, conn
    while not rsASP.EOF
        outstr=outstr&rsASP("WEBASP")&","
    rsASP.movenext
    wend
    Response.Write Left(outstr,Len(outstr)-1)
    %>
    conn.asp<%
    dim conn
    dim connstr
    on error resume next
    connstr="DBQ="+server.MapPath("data.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
    set conn=server.CreateObject("ADODB.CONNECTION")
    conn.open connstr
    %>数据库data.mdb
    表WEBAccess
    id,自动编号
    WEBAPP,文本
    WEBASP,文本.