<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>级联效果</title>
<script language="javascript" type="text/javascript">
window.onload = function(){
document.getElementById("province").onchange = function(){
var changeProvinceValue = this.value;//获取省变化的值
var cityElement = document.getElementById("city");//清空下拉选项的值
var cityoptionElements = cityElement.getElementsByTagName("option");
for(var i=cityoptionElements.length -1 ;i >0;i--){
cityElement.removeChild(cityoptionElements[i]);
}
//测试xml是否加载成功
var xmldoc = parseXml("city.xml");
var provinceElement= null;
//定位到具体省
var xmlProvinceElements = xmldoc.getElementsByTagName("province");
for(var i=0;i<xmlProvinceElements.length;i++){
var xmlProvinceElement=xmlProvinceElements[i];
var nameAttribute =xmlProvinceElement.getAttribute("name");
if(changeProvinceValue == nameAttribute){
provinceElement = xmlProvinceElement;
break;
}
}
if(provinceElement != null){
var xmlCityElements=provinceElement.getElementsByTagName("city");
for(var i=0 ; i<xmlCityElements.length;i++){
var cityValue=xmlCityElements[i].firstChild.nodeValue;
var optionElement=document.createElement("option");
optionElement.setAttribute("value",cityValue);
var cityTextElement=document.createTextNode(cityValue);
optionElement.appendChild(cityTextElement); var cityElement=document.getElementById("city");
cityElement.appendChild(optionElement);
}
}
}
}
function parseXml(filename){
try{
xmldoc =new ActiveXObject("Microsoft.XMLDOM");
}
catch(e){
try{
xmldoc= document.implementation.createDocument("","",null);
}
catch(e){}
}
xmldoc.async = false;
xmldoc.load(filename);
return xmldoc;
}
</script>
</head> <body>
<select id="province" name="province">
<option value="">请选择</option>
<option value="吉林省">吉林省</option>
<option value="山东省">山东省</option>
<option value="辽宁省">辽宁省</option>
</select>
<select id="city" name="city">
<option value="">请选择</option>
</select>
</body> </html>

以下是xml文件(city.xml):

 <?xml version="1.0" encoding="GB2312"?>
<china>
<province name="吉林省">
<city>长春</city>
<city>松原</city>
<city>通化</city>
<city>四平</city>
</province>
<province name="辽宁省">
<city>沈阳</city>
<city>大连</city>
<city>鞍山</city>
<city>抚顺</city>
</province>
<province name="山东省">
<city>威海</city>
<city>济南</city>
<city>青岛</city>
<city>烟台</city>
</province>
</china>

效果:

下拉选择山东,右边的下拉出现相对应的城市。

js实现“级联菜单”的更多相关文章

  1. JS动态级联菜单

    JS动态级联菜单是前端常用的一个功能,特此抽时间研究了下,附上代码 <html> <head> <meta charset="utf-8" /> ...

  2. JS实战 · 级联菜单选择省份和城市(两种)

    DOM编程步骤.思路 1.定义界面:      通过html标签将数据进行封装: 2.定义一些静态样式:      利用css: 3.需要动态地完成的和用户的交互:      a:明确事件源:     ...

  3. js实现级联菜单(没有后台)

    html代码: <!-- js级联菜单 --> <div id="cascMenu"> <select id="select" o ...

  4. JS实现级联菜单

    是首先应该添加两个下拉列表并设置id属性来方便操作: <select id="country"> <option>国家</option> < ...

  5. js进阶 9-12 js如何实现级联菜单 (章节测试)

    js进阶 9-12  js如何实现级联菜单 (章节测试) 一.总结 一句话总结: 1.js如何实现级联菜单 ? 二维数组,以第一级菜单的文本值做键,以对应的二级菜单选项的文本做值 2.用哪个属性可以获 ...

  6. 前台JS(Jquery)调用后台方法 无刷新级联菜单示例

    前台用AJAX直接调用后台方法,老有人发帖提问,没事做个示例 下面是做的一个前台用JQUERY,AJAX调用后台方法做的无刷新级联菜单 http://www.dtan.so CasMenu.aspx页 ...

  7. 使用json方式实现省市两级下拉级联菜单[原创]

    本文为博主原创,转载请注明. 首先看一下实现后的效果图: 当然,要完成这个实验,mysql必须与数据库连接,这里选用navicat for mysql这款软件,它与mysql的契合度是很高的,配置环境 ...

  8. Ajax实现动态的二级级联菜单

    今天花了点时间用Ajax实现了一个二级级联菜单.整理总结一下.为了把重点放在Ajax和级联菜单的实现上,本文省略了数据库建表语句和操作数据库的代码! 数据库建表语句就不帖出来了.主要有两张表,区域表: ...

  9. js省市级联实现

    js省市级联实现. for [element] in [collection] 用于循环下标,常用于json for(index in arr){ console.info("下标:&quo ...

随机推荐

  1. Delphi 10.3.2最新消息

    官方已经发布消息,招内测人员了! https://www.barnsten.com/default/newsupdates/details?news_id=328 https://docs.googl ...

  2. (问题待解决)sql查询不显示前置‘0’的问题

    SELECT * , ,),() ) ' end)) from CourseBooksNotes ),)),)+'秒'; ),)),)),)+'秒'

  3. hadoop手工移块

    1.关于磁盘使用策略,介绍参考http://www.it165.net/admin/html/201410/3860.html 在hadoop2.0中,datanode数据副本存放磁盘选择策略有两种方 ...

  4. ZooKeeper官方文档资源

    一般来说官方的文档是最权威的. 入口:http://zookeeper.apache.org/ 在右侧即可进入相应版本文档: 如果想要看主干的文章,入口如下,主干是最稳当的版本:http://zook ...

  5. linux 下ip命令对比ifconfig命令

    原文:https://linux.cn/article-3144-1.html ------------------------------------------------------------ ...

  6. JS推断是否为JSON对象及是否存在某字段

    $.ajax({ type: 'POST', url: url, success(function(data){ //推断是否为JSON对象 if(typeof(data) == "obje ...

  7. broadleaf commerce到mysql和tomcat的迁移

    近期刚刚接触broadleaf commerce, 一个电商站点的开源模版.详细的执行和配置能够參考链接:点击打开链接 而该模版是在jetty容器下执行的,数据库是HSQL.官方站点上给出了怎样将数据 ...

  8. 代理server的理解(1):Windows环境下的代理server设置

    浏览器中的代理server设置 Windows系统接口提供的代理server设置是一个全局的代理server的设置,如图所看到的,这里就不多解释: 各个浏览器在使用代理设置的时候,能够主动地获代替理设 ...

  9. 用sp_executesql执行动态SQL语句及获得返回值

    过去我执行拼凑出来的动态SQL语句,都直接使用EXEC @sql 的方式.有好几次,都看到有资料说,应该尽量使用 sp_executesql. 究其原因,是因为仅仅参数不同的情况下,sp_execut ...

  10. 在Win7中修改 系统盘中 “系统” - “用户” 的环境变量映射关系

    1.在此列表中,选中对应登录帐号 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 2.将Prof ...