ASP二级联动下拉菜单

来源:互联网 发布:威纶通eb8000编程实例 编辑:程序博客网 时间:2024/05/01 17:03
ASP+JavaScript+数据库 级联下拉菜单

<!--
***********************************
ASP+JavaScript+数据库 级联下拉菜单
***********************************
    以前都用JS的多级级联下拉菜单,但那个有局限性,每次更新列表项内容时都必须修改程序,
今天有空,写了这个数据库形式的,易于管理和修改,且你可以在此思路上建立更多级的级联菜单。
    好了,废话少说,言归正传。
     测试数据库:test.mdb    你可以自己建一个。
     -----------------------------------------------------------------------------
                 表名:       字段1           字段2                字段3
     -----------------------------------------------------------------------------
     表1:     big_class    big_class_id    big_class_name
     表2:    small_class  small_class_id    small_class_name  belongto_big_class
     数据类型               自动编号            文本                数字
     -----------------------------------------------------------------------------
     以下是程序清单,共1个文件,文件名:test.asp
-->
<%
'option explicit
dim conn,connstr,db
db="test.mdb"      '测试数据库
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&db&"")
conn.Open connstr
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>ASP+JavaScript+数据库 级联下拉菜单</title>
<style>
table{border: #00215a 1px dashed;}
td{font-size:12px;}
input,select{
     font-size:9pt;
     border-style:solid;
     border-width:1;
     cursor:default;
     color:#03326B;
     background-color:#FFFFFF;
     height:16px;
}
a:link,a:visited{color: #000000;text-decoration: none;}
a:hover {color: #ff0000;text-decoration: none;FILTER: glow(color=ffffff,strength=0) shadow(color=aaaaaa,direction:135); POSITION: relative; WIDTH: 100%;}
</style>
<script language="JavaScript">
function addbig(){
document.all.a.style.display="block";
document.all.b.style.display="none";
document.all.c.style.display="none";
}
function addsmall(){
document.all.b.style.display="block";
document.all.a.style.display="none";
document.all.c.style.display="none";
}
function viewmenu(){
document.all.a.style.display="none";
document.all.b.style.display="none";
document.all.c.style.display="block";
}
</script>
<%
'从小类表中取出数据
           set rs=server.CreateObject("adodb.recordset")
           sql="select * from small_class "
           rs.open sql,conn,1,1
%>
<script language="JavaScript">
var num;
//定义数组
var calArray=new Array();
<%
dim j
j=0
do while not rs.eof
%>
//将小类表中的所有相关记录存到数组calArray的对应元素中。
calArray[<%=j%>]=new Array("<%=rs("small_class_id")%>","<%=rs("small_class_name")%>","<%=rs("belongto_big_class")%>");
<%
j=j+1
rs.movenext
loop
rs.close
set rs=nothing
%>
//给num赋值为记录总数
num=<%=j%>
function givevalue(myvalue){
/*当选择大类列表的值不为空时首先清空小类下拉列表的所有项目。不然小类列表中的项目会叠加的。
同时也是初始化 options 的值为0 */
document.form3.small_class_select.length = 0;
//循环写出请求的大类所对应的小类。
    for (i=0;i < num; i++)
        {
            if (calArray[i][2] == myvalue)
            {
             document.form3.small_class_select.options[document.form3.small_class_select.length] = new Option(calArray[i][1], calArray[i][0],"","");
                  /*定义新的Option对象并赋值。options的索引值从0开始。new Option对象有4个属性,对应分别是:文本串、value、defaultSelect、selected。在这里只用了第一个和第二个。*/
                 }       
         }
}
</script>
<script language="JavaScript">
function chk1(){
if (form1.big_class_name.value=="")
     {
     alert("请输入大类名称!");
     form1.big_class_name.focus();
     return false;
     }
}
function chk2(){
if (form2.small_class_name.value=="")
     {
     alert("请输入小类名称!");
     form2.small_class_name.focus();
     return false;
     }
}

</script>
</head>

<body background="background.jpg">
<%
dim rs,sql,noclass
select case request("action")
     case "addbigclass"
     addbigclass
     case "addsmallclass"
     addsmallclass
end select
%>
<div align="center"></div>
<table width="60%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr valign="middle">
    <td height="48" colspan="3">
      <div align="center"><font color="#999900"><b><font color="#FF0000">ASP</font>+<font color="#FF0000">JavaScript</font>+<font color="#FF0000">数据库</font>
        级联下拉菜单</b></font></div></td>
  </tr>
  <tr>
    <td width="22%" height="21" valign="bottom"><a href="#" onClick="addbig()">添加大类</a>
    </td>
    <td width="22%" valign="bottom"><a href="#" onClick="addsmall()">添加小类</a></td>
    <td width="56%" valign="bottom"><a href="#" onClick="viewmenu()">预览效果</a></td>
  </tr>
  <tr>
    <td height="33" colspan="3" valign="top">
      <hr align="left" width="60%" size="1" color="#999900">
    </td>
  </tr>
  <tr>
    <td colspan="3" valign="top"> <div id="a" style="display:none">
        <form name="form1" method="post" action="?action=addbigclass" onSubmit="return chk1()">
          大类名称:
          <input name="big_class_name" type="text" id="big_class_name" size="16">
          <input type="submit" name="Submit" value=" 添 加 ">
        </form>
      </div>
      <div id="b" style="display:none">
        <form name="form2" method="post" action="?action=addsmallclass" onSubmit="return chk2()">
          选择大类后添加小类:
          <select name="addselect">
            <%
           set rs=server.CreateObject("adodb.recordset")
           sql="big_class"
           rs.open sql,conn,1,1
           if rs.eof or rs.bof then
           %>
            <option selected>还没有添加大类</option>
            <%
           else
           do while not rs.eof
           %>
            <option value="<%=rs("big_class_id")%>"><%=trim(rs("big_class_name"))%></option>
            <%
           rs.movenext
           loop
           end if
           rs.close
           set rs=nothing
           %>
          </select>
          小类名称:
          <input name="small_class_name" type="text" id="small_class_name" size="16">
          <input type="submit" name="Submit2" value=" 添 加 ">
        </form>
      </div>
      <div id="c" style="display:block">
        <form name="form3" method="post" action="">
          <select name="big_class_select" onChange="givevalue(document.form3.big_class_select.options[document.form3.big_class_select.selectedIndex].value)">
            <%
                 dim firstid
           set rs=server.CreateObject("adodb.recordset")
           sql="select * from big_class order by big_class_id"
           rs.open sql,conn,1,1
           if rs.eof or rs.bof then
           noclass=1
           %>
            <option selected>还没有添加大类</option>
            <%
           else
           rs.movefirst
           firstid=rs("big_class_id")
           '在没有选择大类(页面刚载入)时要载入的大类。
           %>
            <option value="<%=rs("big_class_id")%>" selected><%=trim(rs("big_class_name"))%></option>
            <%
           rs.movenext
           do while not rs.eof
           %>
            <option value="<%=rs("big_class_id")%>"><%=trim(rs("big_class_name"))%></option>
            <%
           rs.movenext
           loop
           end if
           rs.close
           set rs=nothing
           %>
          </select>
          <select name="small_class_select">
            <%if noclass=1 then%>
            <option value="" selected>没有小类</option>
            <%
           else
           '在没有选择大类(页面刚载入)时要载入的小类,要跟默认的大类对应。
           set rs=server.CreateObject("adodb.recordset")
           sql="select * from small_class where belongto_big_class="&firstid
           rs.open sql,conn,1,1
           if rs.eof or rs.bof then
           %>
            <option value="" selected>没有小类</option>
            <%
           else
           do while not rs.eof
           %>
            <option value="<%=rs("small_class_id")%>"><%=trim(rs("small_class_name"))%></option>
            <%
           rs.movenext
           loop
           end if
           rs.close
           set rs=nothing
        end if
           %>
          </select>
        </form>
      </div></td>
  </tr>
</table>
<%
sub addbigclass()
           set rs=server.CreateObject("adodb.recordset")
           sql="select * from big_class where big_class_name='"&trim(request("big_class_name"))&"'"
           rs.open sql,conn,1,3
           if not(rs.eof and rs.bof) then
           response.Write("<script>alert('该大类已经存在!');</script>")
           else
           rs.addnew
           rs("big_class_name")=trim(request("big_class_name"))
           rs.update
           response.Write("<script>alert('大类添加成功!');self.location='test.asp?action=viewmenu';</script>")
           end if
           rs.close
           set rs=nothing
end sub
sub addsmallclass()
           set rs=server.CreateObject("adodb.recordset")
           sql="select * from small_class where small_class_name='"&trim(request("small_class_name"))&"' and belongto_big_class="&request("addselect")
           rs.open sql,conn,1,3
           if not(rs.eof and rs.bof) then
           response.Write("<script>alert('该小类已经存在!');</script>")
           else
           rs.addnew
           rs("belongto_big_class")=request("addselect")
           rs("small_class_name")=trim(request("small_class_name"))
           rs.update
           response.Write("<script>alert('小类添加成功!');self.location='test.asp?action=viewmenu';</script>")
           end if
           rs.close
           set rs=nothing
end sub
conn.close
set conn=nothing
%>
<table width="60%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="48%"> <div align="right">Copyright © </div></td>
    <td width="1%"> </td>
    <td width="11%"><b><a href="http://cooleasy.xicp.net/">酷易在线</a></b> </td>
    <td width="40%"><a href="mailto:xljxlj279@126.com">联系站长</a></td>
  </tr>
</table>
</body>
</html>

**********************************************************************************************************************

从数据库读出数据生成关联下拉菜单!
<table width="74" border="0" cellpadding="1" cellspacing="0">
        <tr>
          <td width="37"><select name="ClassName" id="ClassName" onChange="opensubselect(document.all.SubClass,document.all.ClassName.value)">
              <!--  <SELECT NAME="ClassName" ID="ClassName" onChange="OpenSubClass(this.name,this.value)"> -->
          </select></td>
          <td width="37"><select name="SubClass" id="SubClass">
          </select></td>
        </tr>
        <script language="JAVASCRIPT" type="TEXT/JAVASCRIPT">
           var SubClass=[],SubClassID=[];
           <%
           Dim Rs_Class,Rs_SubClass,SqlStr,i,j,SubClassStr,SubClassID
           Set Rs_Class=Server.CreateObject("ADODB.RecordSet")
           Set Rs_SubClass=Server.CreateObject("ADODB.RecordSet")
           SqlStr="Select * From [p_softClass]"
           Rs_Class.open SqlStr,ConnStr,1,1
           For i=1 to Rs_Class.RecordCount
                 Response.Write "document.all.ClassName.add(new Option('" & Rs_Class("name") & "'," & i &"));" & chr(13)
                 SqlStr="SELECT * FROM [p_soft_SubClass] WHERE ([pid]=" & Rs_Class("id") & ")"
                 Rs_SubClass.open SqlStr,ConnStr,1,1
                 SubClassStr=""
                 SubClassID=""
                 For j=1 To Rs_SubClass.RecordCount
                       SubClassStr=SubClassStr & "'" & Rs_SubClass("name") & "',"
                       SubClassID=SubClassID & Rs_SubClass("ID") & ","
                       Rs_SubClass.MoveNext
                 Next
                 If len(SubClassStr)>0 Then
                       Response.Write "SubClass[" & i & "]=new Array(" & Left(SubClassStr,Len(SubClassStr)-1) & ");" & chr(13)
                       Response.Write "SubClassID[" & i & "]=new Array(" & Left(SubClassID,Len(SubClassID)-1) & ");" & Chr(13)
                 Else
                       Response.Write "SubClass[" & i & "]=new Array();" & chr(13)
                 End If
                 Rs_SubClass.close
                 Rs_Class.MoveNext
           Next
           Rs_Class.close
           Set Rs_SubClass=nothing
           Set Rs_Class=nothing
           %>
           function opensubselect(obj,id)
           {
                 var i=SubClass[id].length;
                 obj.options.length=0;
           //      obj.add(new Option(SubClass[0]));
                 for(var h=0;h<i;++h)
                 {
                       obj.add(new Option(SubClass[id][h],SubClassID[id][h]));
                 }
           }
           opensubselect(document.all.SubClass,document.all.ClassName.value);
      </script>
      </table>

*************************************************************************************************************************
  
  '联社 信用社二级联动


  Sub LianDong2Ji()
  dim rsel,count,lastm
  set rsel=server.createobject("adodb.recordset")
  %>
  <script language = "JavaScript">
  
  <!--联社、信用社二级联动-->
  var onecount1;
  onecount1=0;
  rootcat = new Array();
  <%
  count = 1
  lastm = ""
  %>
  rootcat[0] = new Array("0","请选择县级联社","0");
  <%
  rsel.open "Select XjlsMC,XjlsDH From XJLS Order By XjlsDH",MyConn,1,1
  
  do while Not rsel.eof
  %>
  rootcat[<%=count%>] = new Array("0","<%= trim(rsel(0))%>","<%= trim(rsel(1))%>");
  <%
  count = count + 1
  rsel.movenext
  loop
  rsel.close
  %>
  onecount1=<%=count%>;
  
  var onecount2;
  onecount2=0;
  subcat = new Array();
  <%
  count = 1
  lastm = ""
  %>
  subcat[0] = new Array("0","请先选择县级联社","0");
  <%
  rsel.open "Select XjlsDH,JC,SH From XYS Order By XjlsDH,SH",MyConn,1,1
  do while not rsel.eof
  if lastm <> trim(rsel("XjlsDH")) then
  %>
  subcat[<%=count%>] = new Array("<%= trim(rsel(0))%>","请选择信用社","0");
  <%
  lastm = trim(rsel("XjlsDH"))
  count = count + 1
  end if
  %>
  subcat[<%=count%>] = new Array("<%= trim(rsel("XjlsDH"))%>","<%= trim(rsel("JC"))%>","<%= trim(rsel("SH"))%>");
  <%
  count = count + 1
  rsel.movenext
  loop
  rsel.close
  %>
  onecount2=<%=count%>;
  
  
  function ChangeXjlsDH(locationid)
  {
  document.DQKSELECT.XjlsDH.length = 0;
  var locationid=locationid;
  var i;
  for (i=0;i < onecount1; i++)
  {
  if (rootcat[i][0] == locationid)
  {
  document.DQKSELECT.XjlsDH.options[document.DQKSELECT.XjlsDH.length] = new Option(rootcat[i][1], rootcat[i][2]);
  }
  }
  
  }
  
  function ChangeSH(locationid)
  {
  document.DQKSELECT.SH.length = 0;
  var locationid=locationid;
  var i;
  for (i=0;i < onecount2; i++)
  {
  if (subcat[i][0] == locationid)
  {
  document.DQKSELECT.SH.options[document.DQKSELECT.SH.length] = new Option(subcat[i][1], subcat[i][2]);
  }
  }
  
  }
  ChangeXjlsDH(0)
  ChangeSH(0)
  </script>
  <%
  End Sub

*********************************************************************************************************************

 <script language=vbScript>
<!--
public x(33)
x( 0 )="东城,西城,崇文,宣武,朝阳,丰台,石景山,海淀,门头沟,房山,通州,顺义,昌平,大兴,平谷,怀柔,密云,延庆"
x( 1 )="黄浦,卢湾,徐汇,长宁,静安,普陀,闸北,虹口,杨浦,闵行,宝山,嘉定,浦东,金山,松江,青浦,南汇,奉贤,崇明"
x( 2 )="和平,东丽,河东,西青,河西,津南,南开,北辰,河北,武清,红挢,塘沽,汉沽,大港,宁河,静海,宝坻,蓟县"
x( 3 )="万州,涪陵,渝中,大渡口,江北,沙坪坝,九龙坡,南岸,北碚,万盛,双挢,渝北,巴南,黔江,长寿,綦江,潼南,铜梁,大足,荣昌,壁山,梁平, 城口,丰都,垫江,武隆,忠县,开县,云阳,奉节,巫山,巫溪,石柱,秀山,酉阳,彭水,江津,合川,永川,南川"
x( 4 )="石家庄,邯郸,邢台,保定,张家口,承德,廊坊,唐山,秦皇岛,沧州,衡水"
x( 5 )="太原,大同,阳泉,长治,晋城,朔州,吕梁,忻州,晋中,临汾,运城"
x( 6 )="呼和浩特,包头,乌海,赤峰,呼伦贝尔盟,阿拉善盟,哲里木盟,兴安盟,乌兰察布盟,锡林郭勒盟,巴彦淖尔盟,伊克昭盟"
x( 7 )="沈阳,大连,鞍山,抚顺,本溪,丹东,锦州,营口,阜新,辽阳,盘锦,铁岭,朝阳,葫芦岛"
x( 8 )="长春,吉林,四平,辽源,通化,白山,松原,白城,延边"
x( 9 )="哈尔滨,齐齐哈尔,牡丹江,佳木斯,大庆,绥化,鹤岗,鸡西,黑河,双鸭山,伊春,七台河,大兴安岭"
x( 10 )="南京,镇江,苏州,南通,扬州,盐城,徐州,连云港,常州,无锡,宿迁,泰州,淮安"
x( 11 )="杭州,宁波,温州,嘉兴,湖州,绍兴,金华,衢州,舟山,台州,丽水"
x( 12 )="合肥,芜湖,蚌埠,马鞍山,淮北,铜陵,安庆,黄山,滁州,宿州,池州,淮南,巢湖,阜阳,六安,宣城,亳州"
x( 13 )="福州,厦门,莆田,三明,泉州,漳州,南平,龙岩,宁德,东山"
x( 14 )="南昌市,景德镇,九江,鹰潭,萍乡,新馀,赣州,吉安,宜春,抚州,上饶"
x( 15 )="济南,青岛,淄博,枣庄,东营,烟台,潍坊,济宁,泰安,威海,日照,莱芜,临沂,德州,聊城,滨州,菏泽"
x( 16 )="郑州,开封,洛阳,平顶山,安阳,鹤壁,新乡,焦作,濮阳,许昌,漯河,三门峡,南阳,商丘,信阳,周口,驻马店,济源"
x( 17 )="武汉,宜昌,荆州,襄樊,黄石,荆门,黄冈,十堰,恩施,潜江,天门,仙桃,随州,咸宁,孝感,鄂州"
x( 18 )="长沙,常德,株洲,湘潭,衡阳,岳阳,邵阳,益阳,娄底,怀化,郴州,永州,湘西,张家界"
x( 19 )="广州,深圳,珠海,汕头,东莞,中山,佛山,韶关,江门,湛江,茂名,肇庆,惠州,梅州,汕尾,河源,阳江,清远,潮州,揭阳,云浮"
x( 20 )="南宁,柳州,桂林,梧州,北海,防城港,钦州,贵港,玉林,南宁地区,柳州地区,贺州,百色,河池"
x( 21 )="海口,三亚"
x( 22 )="成都,绵阳,德阳,自贡,攀枝花,广元,内江,乐山,南充,宜宾,广安,达川,雅安,眉山,甘孜,凉山,泸州"
x( 23 )="贵阳,六盘水,遵义,安顺,铜仁,黔西南,毕节,黔东南,黔南"
x( 24 )="昆明,大理,曲靖,玉溪,昭通,楚雄,红河,文山,思茅,西双版纳,保山,德宏,丽江,怒江,迪庆,临沧"
x( 25 )="拉萨,日喀则,山南,林芝,昌都,阿里,那曲"
x( 26 )="西安,宝鸡,咸阳,铜川,渭南,延安,榆林,汉中,安康,商洛"
x( 27 )="兰州,嘉峪关,金昌,白银,天水,酒泉,张掖,武威,定西,陇南,平凉,庆阳,临夏,甘南"
x( 28 )="银川,石嘴山,吴忠,固原"
x( 29 )="西宁,海东,海南,海北,黄南,玉树,果洛,海西"
x( 30 )="乌鲁木齐,石河子,克拉玛依,伊犁,巴音郭勒,昌吉,克孜勒苏柯尔克孜,博 尔塔拉,吐鲁番,哈密,喀什,和田,阿克苏"
x( 31 )=""
x( 32 )=""
x( 33 )="台北,高雄,台中,台南,屏东,南投,云林,新竹,彰化,苗栗,嘉义,花莲,桃园,宜兰,基隆,台东,金门,马祖,澎湖"

function test(a,b)
dim num,x1,i
num =a.selectedIndex
x1=split(x(num),",")
b.options.length=ubound(x1)+1
For i = 0 to ubound(x1)
b.options(i).text =x1(i)
b.options(i).value = x1(i)
next
end function
-->
</script>
<body>
<select name="a" onChange="vbscript:test a,b">
<option value= 0 >北京</option>
<option value= 1 >上海</option>
<option value= 2 >天津</option>
<option value= 3 >重庆</option>
<option value= 4 >河北</option>
<option value= 5 >山西</option>
<option value= 6 >内蒙古</option>
<option value= 7 >辽宁</option>
<option value= 8 >吉林</option>
<option value= 9 >黑龙江</option>
<option value= 10 >江苏</option>
<option value= 11 >浙江</option>
<option value= 12 >安徽</option>
<option value= 13 >福建</option>
<option value= 14 >江西</option>
<option value= 15 >山东</option>
<option value= 16 >河南</option>
<option value= 17 >湖北</option>
<option value= 18 >湖南</option>
<option value= 19 >广东</option>
<option value= 20 >广西</option>
<option value= 21 >海南</option>
<option value= 22 >四川</option>
<option value= 23 >贵州</option>
<option value= 24 >云南</option>
<option value= 25 >西藏</option>
<option value= 26 >陕西</option>
<option value= 27 >甘肃</option>
<option value= 28 >宁夏</option>
<option value= 29 >青海</option>
<option value= 30 >新疆</option>
<option value= 31 >香港</option>
<option value= 32 >澳门</option>
<option value= 33 >台湾</option>

</select>
<select name="b">
</select>
</body>

*****************************************************************

这里是以省份和城市为例,由于用到数据库,请先建立数据库dlist.mdb

数据库名称:dlist.mdb


省份表名称:Province
字段有:p_id(类型:自动编号),p_name(类型:文本,省份名称)

城市表名称:City
字段有:c_id(类型:自动编号),c_pid(类型:文本,省份名称,等于Province表中的p_name),c_name(类型:文本,城市名称)


源程序如下,保存为ASP文件即可执行。
------------------------------------------------------------
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JS动态列表示例</title>
<script language="JavaScript"><!--
<%
dim conn,rs,grs,i,j,pstr,sstr
set conn=server.createobject("adodb.connection")
set rs=server.createobject("adodb.recordset")
set grs=server.createobject("adodb.recordset")
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.mappath("dlist.mdb")
'写省份JS数组
rs.open "select * from province;",conn,1,1
pstr="var pstr=new Array("
for i=0 to rs.recordcount-1
 if i<>rs.recordcount-1 then
  pstr=pstr & "'" & rs("p_name") & "',"
 else
  pstr=pstr & "'" & rs("p_name") & "'"
 end if
 getsub(rs("p_name"))
 rs.movenext
next
pstr=pstr & ");"
response.write pstr & vbcrlf
rs.close()
set rs=nothing
set grs=nothing

'根据省份写城市JS数组的过程
sub getsub(pname)
 grs.open "select * from city where c_pid='" & pname & "';",conn,1,1
 sstr="var sstr" & i & "=new Array("
 for j=1 to grs.recordcount
  if j<>grs.recordcount then
   sstr=sstr & "'" & grs("c_name") & "',"
  else
   sstr=sstr & "'" & grs("c_name") & "'"
  end if
  grs.movenext
 next
 grs.close()
 sstr=sstr & ");"
 response.write sstr & vbcrlf
end sub
%>

//添加列表项目
//参数说明:FrmName-表单名、sName-要添加的列表名、sText-列表项显示的文本、sValue-列表项的值
function addOption(FrmName, sName, sText, sValue) {
  var def = true;
  var sel = true;
  var optionName = new Option(sText, sValue, def, sel);
  var length = FrmName[sName].length;
  FrmName[sName].options[length] = optionName;
  FrmName[sName].options[length].selected = false;
}

//删除列表项目
//参数说明:FrmName-表单名、sName-要删除的列表名、force-是否删除原来的项目(True删除,False保留)
function delOptions(FrmName, sName, force) {
  var length = FrmName[sName].options.length;
  for (var i=0; i<FrmName[sName].options.length; i++) {
    if (FrmName[sName].options[i].selected || force) {
      FrmName[sName].options[i] = null;
      length--;
      i--;
    }
  }
}

//获得要添加列表项目的数组;
//参数说明:what-要获得选定值的列表
function getArrayValue(what) {
   return eval(what.options[what.options.selectedIndex].value);
}

//根据当前选定值,添加列表项目
//参数说明:FrmName-表单名、sName1-要获取选定值的列表名、sName2-要动态加载的列表名
function updateOptions(FrmName, sName1, sName2) {
  delOptions(FrmName,sName2,true);
  var ArrayValue=getArrayValue(FrmName[sName1]);
  for (var i=0; i<ArrayValue.length;i+=1) {
    addOption(FrmName,sName2,ArrayValue[i],'sstr'+i);
  }
  FrmName[sName2].options.selectedIndex =0;//设置默认显示的列表项目
}

function GetValue(k){
  alert(k);
}

//--></script>
</head>

<body onLoad="updateOptions(frmdlist, 'lsti', 'lstb');updateOptions(frmdlist, 'lstb', 'lsts')">
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<form action="" method="post" name="frmdlist" id="frmdlist">
  <table width="408" border="0" align="center" cellpadding="2" cellspacing="2">
    <tr>
      <td width="400">JS动态列表示例<select name="lsti" style="display:none"><option value="pstr">pstr</select></td>
    </tr>
    <tr>
      <td><select style="width:200" name="lstb" id="lstb" onChange="updateOptions(this.form, 'lstb', 'lsts')">
      </select>
      <input type="button" name="Submit2" value="GetValue" onClick="GetValue(document.frmdlist.lstb.value)"></td>
    </tr>
    <tr>
      <td><select style="width:200" name="lsts" id="lsts">
      </select>
      <input type="button" name="Submit" value="GetValue" onClick="GetValue(document.frmdlist.lsts.value)"></td>
    </tr>
  </table>
</form>
</body>
</html>

原创粉丝点击