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 相关文章推荐
JSON 学习之JSON in JavaScript详细使用说明
Feb 23 Javascript
jQuery新闻滚动插件 jquery.roller.js
Jun 27 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
Jan 21 Javascript
IE浏览器中图片onload事件无效的解决方法
Apr 29 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
Dec 31 Javascript
使用Node.js给图片加水印的方法
Nov 15 Javascript
前端面试知识点锦集(JavaScript篇)
Dec 28 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
Apr 13 Javascript
vue做网页开场视频的实例代码
Oct 20 Javascript
JavaScript事件冒泡与事件捕获实例分析
Aug 01 Javascript
mpvue小程序仿qq左滑置顶删除组件
Aug 03 Javascript
vue路由权限校验功能的实现代码
Jun 07 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
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
2019/10/25 Javascript
jQuery 选择方法及$(this)用法实例分析
2020/05/19 jQuery
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
Python实现在线音乐播放器
2017/03/03 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
python 随机打乱 图片和对应的标签方法
2018/12/14 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
pytorch 修改预训练model实例
2020/01/18 Python
Python处理PDF与CDF实例
2020/02/26 Python
J2EE包括哪些技术
2016/11/25 面试题
初中班主任寄语
2014/04/04 职场文书
工作说明书范文
2014/05/07 职场文书
个人总结与自我评价
2015/02/14 职场文书
汽车销售助理岗位职责
2015/04/14 职场文书
2015年采购员工作总结
2015/04/27 职场文书
重阳节活动主持词
2015/07/04 职场文书
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL