javascript读取Xml文件做一个二级联动菜单示例


Posted in Javascript onMarch 17, 2014
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<title>menu2level.html</title> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
<script type="text/javascript"> 
function loadXML(){ 
var xmlDoc; 
try{ 
//IE 
xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
}catch(e){ 
try{ 
xmlDoc = document.implementation.createDocument("","",null); 
}catch(e){ 
alert(e.message); 
return; 
} 
} 
xmlDoc.async=false; 
xmlDoc.load("cities.xml"); 
return xmlDoc; 
} 
//网页加载完在加载 完成省份加载 
onload=function(){ 
var xmlDocument = loadXML(); 
var provinceArr =xmlDocument.getElementsByTagName("province"); 
var proSize = provinceArr.length; 
for(var i=0;i<proSize;i++){ 
//创建option节点 
var optionElement = document.createElement("option"); 
var provinceName = provinceArr[i].getAttribute("name"); 
//创建文本节点 
var textElement =document.createTextNode(provinceName); 
optionElement.appendChild(textElement); 
optionElement.setAttribute("value", provinceName); 
var node = document.getElementById("province"); 
node.appendChild(optionElement); 
} 
} 
//省份改变事件 
function changeProvince(node){ 
//获取选择的角标 
var index = node.selectedIndex; 
//获取对应的省份名 
var provinceName = node.options[index].value; 
loadCities(provinceName); 
} //根据省份编号加载城市信息 
function loadCities(proName){ 
var xmlDocument = loadXML(); 
var provinceArr =xmlDocument.getElementsByTagName("province"); 
//获取城市的元素 
var citySelectEle = document.getElementById("cities"); 
var size = citySelectEle.options.length; 
for(var i=size;i>0;i--){ 
citySelectEle.remove(i); 
} 
//获取省份的个数 
var proSize = provinceArr.length; 
var proElement; 
//获取对应的省份元素 
for(var i=0;i<proSize;i++){ 
if(provinceArr[i].getAttribute("name")==proName){ 
proElement = provinceArr[i]; 
break; 
} 
} 
//获取省份的城市信息 
var citiesArr = proElement.getElementsByTagName("city"); 
var len = citiesArr.length; 
for(var i=0;i<len;i++){ 
//创建option节点 
var optionElement = document.createElement("option"); 
//获取城市名 
var cityName = citiesArr[i].firstChild.nodeValue; 
//创建文本节点 
var textElement =document.createTextNode(cityName); 
optionElement.appendChild(textElement); 
optionElement.setAttribute("value", cityName); 
citySelectEle.appendChild(optionElement); 
} 
} 
function getValue(){ 
var pro = document.getElementById("province").value; 
var city = document.getElementById("cities").value; 
alert(pro+":"+city); 
} 
</script> 
</head> 
<body> 
<select id="province" onchange="changeProvince(this)"> 
<option value="" selected="selected">--省份--</option> 
</select> 
<select id="cities"> 
<option value="" selected="selected">--城市--</option> 
</select> 
<input type="button" value="弹出" onclick="getValue()"/> 
</body> 
</html>

效果如下:
http://img.blog.csdn.net/20140315235043343?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1aGVuZ2h1aTUyMDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
cities.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?> 
<xml-body> 
<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> 
</xml-body>
Javascript 相关文章推荐
JQuery与JS里submit()的区别示例介绍
Feb 17 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
Dec 02 Javascript
使用vue.js制作分页组件
Jun 27 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
Aug 05 Javascript
Javascript中数组去重与拍平的方法示例
Feb 03 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
Aug 19 Javascript
使用vuex的state状态对象的5种方式
Apr 19 Javascript
详解angular应用容器化部署
Aug 14 Javascript
vue-cli3.0配置及使用注意事项详解
Sep 05 Javascript
微信小程序使用map组件实现解析经纬度功能示例
Jan 22 Javascript
如何在项目中使用log4.js的方法步骤
Jul 16 Javascript
js 计数排序的实现示例(升级版)
Jan 12 Javascript
javascript的解析执行顺序在各个浏览器中的不同
Mar 17 #Javascript
jquery禁用右键单击功能屏蔽F5刷新
Mar 17 #Javascript
jquery自动将form表单封装成json的具体实现
Mar 17 #Javascript
获取当前点击按钮的id用this.id实现
Mar 17 #Javascript
jquery如何根据值设置默认的选中项
Mar 17 #Javascript
jquery插件开发之实现md5插件
Mar 17 #Javascript
js对图片base64编码字符串进行解码并输出图像示例
Mar 17 #Javascript
You might like
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
PHP屏蔽过滤指定关键字的方法
2014/11/03 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
js三种排序算法分享
2012/08/16 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
如何区分vue中的v-show 与 v-if
2020/09/08 Javascript
在Python的Django框架中生成CSV文件的方法
2015/07/22 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
Python基于socket模块实现UDP通信功能示例
2018/04/10 Python
python3 pandas 读取MySQL数据和插入的实例
2018/04/20 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
python求绝对值的三种方法小结
2019/12/04 Python
django 模型中的计算字段实例
2020/05/19 Python
open_basedir restriction in effect. 原因与解决方法
2021/03/14 PHP
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
国际象棋商店:The Chess Store
2018/07/09 全球购物
新闻网站实习自我鉴定
2013/09/25 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
迎新晚会策划方案
2014/06/13 职场文书
小学班主任事迹材料
2014/12/17 职场文书
计划生育责任书
2015/05/09 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
Python 如何将integer转化为罗马数(3999以内)
2021/06/05 Python
Python 绘制多因子柱状图
2022/05/11 Python