很好用的二级联动下拉框

单位内部制作根据姓名和身份证号简易工资查询系统,顺手用这个代码扩展做了一个综合查询系统,在这个代码延伸读取excel个人部分。

js Code复制内容到剪贴板
<script src="https://common.cnblogs.com/scripts/jquery-2.2.0.min.js"></script><!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>二级联动下拉框</title> 
<script>
 var data = {<%
Dim fso, f, f1, fc,fp,fs,vf
Set fso = CreateObject("Scripting.FileSystemObject")
fp=server.MapPath("/xls/") & "\"
Set f = fso.GetFolder(fp)
Set fc = f.SubFolders
For Each f1 in fc
i=i+1
%>
 "<%=f1.name%>":[<%
Set fs = f1.Files
For Each vf in fs
%>"<%=vf.name%>",<%
next%>],<%
next%> }
 /* --通过js实现二级联动下拉框-- */
 function selectCity(thisobj){
  //1.获取用户选中的省份
  var prov = thisobj.value;//thisobj-->省份的select
  //2.根据省份获取省份对应的城市列表
  var citys = data[prov]; 
  //3.将省份对应的所有城市作为option选项依次填充到城市select中
  //>>获取城市select
  var oCitySele = document.getElementById("city"); 
        //在填充城市列表数据之前, 先清空之前的数据
  //清理内容方式一
  //oCitySele.innerHTML = "<option>--选择城市--</option>"; 
  var opts = oCitySele.getElementsByTagName("option");
  //清理内容方式二
  //>>循环遍历option, (删除第一个以外的所有option)
  //0 号位为选中提示,所以从1号位开始删除,每次删除后数组都会向前移动,所以
  //遍历删除所有的一号位置就行
  var len = opts.length;//4 3
  for(var i=1; i<len;i++){
   //alert(opts[1].value);
   oCitySele.removeChild(opts[1]);
  } 
  for(var i=0; i<citys.length; i++){
   var opt = document.createElement("option");
   opt.innerHTML = citys[i];
   oCitySele.appendChild(opt);
  }
 } 
</script>
<!-- 
js实现注意问题: 
 ie10以下的浏览器不支持 select,table上的innerHTML属性
 删除option时,由于删除后,options长度发生了变化,所以直接用for循环会有漏删的情况,可以由后向前删除,可以避免这样的问题
-->
</head> 
<body> 

 <div id="seleDiv">
  <select id="province" onchange="selectCity(this)" size="4">
   <option>--选择查询类型--</option>
   <option>工资</option>
   <option>2222</option>
  </select>
  <select id="city" size="4">
   <option>--选择城市--</option>
  </select>
 </div>
</body> 
</html>