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 相关文章推荐
关于图片验证码设计的思考
Jan 29 Javascript
javascript css在IE和Firefox中区别分析
Feb 18 Javascript
js创建数据共享接口——简化框架之间相互传值
Oct 23 Javascript
用JavaScript仿PS里的羽化效果代码
Dec 20 Javascript
tangram框架响应式加载图片方法
Nov 21 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
Aug 11 Javascript
jQuery实现表格行上下移动和置顶效果
Jun 05 Javascript
vue中组件的3种使用方式详解
Mar 23 Javascript
详解JS实现简单的时分秒倒计时代码
Apr 25 Javascript
vue路由插件之vue-route
Jun 13 Javascript
公众号SVG动画交互实战代码
May 31 Javascript
vue监听滚动事件的方法
Dec 21 Vue.js
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
php下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
php获得文件大小和文件创建时间的方法
2015/03/13 PHP
js 操作符实例代码
2009/10/24 Javascript
JQuery的ready函数与JS的onload的区别详解
2013/11/21 Javascript
简单的邮箱登陆的提示效果类似于yahoo邮箱
2014/02/26 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
Node.js中看JavaScript的引用
2017/04/22 Javascript
Nginx设置为Node.js的前端服务器方法总结
2019/03/27 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
2019/05/29 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
Vue开发环境跨域访问问题
2020/01/22 Javascript
原生JS实现无缝轮播图片
2020/06/24 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
Python之list对应元素求和的方法
2018/06/28 Python
Python实现基于PIL和tesseract的验证码识别功能示例
2018/07/11 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
解决pycharm debug时界面下方不出现step等按钮及变量值的问题
2020/06/09 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
三只松鼠官方旗舰店:全网坚果销售第1
2017/11/25 全球购物
施华洛世奇波兰官网:SWAROVSKI波兰
2019/06/18 全球购物
业务部门经理岗位职责
2014/02/23 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
2015年乡镇科普工作总结
2015/05/13 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
python数字转对应中文的方法总结
2021/08/02 Python
使用Redis做预定库存缓存功能
2022/04/02 Redis
JS实现数组去重的11种方法总结
2022/04/04 Javascript