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 相关文章推荐
关于JavaScript的gzip静态压缩方法
Jan 05 Javascript
JavaScript 编写匿名函数的几种方法
Feb 21 Javascript
jQuery Select(单选) 模拟插件 V1.3.62 改进版
Jul 17 Javascript
JavaScript随机排序(随即出牌)
Sep 17 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
Jan 02 Javascript
javascript时间函数大全
Jun 30 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
Oct 09 Javascript
jQuery中deferred对象使用方法详解
Jul 14 Javascript
vue-cli如何添加less 以及sass
Jul 06 Javascript
在vue里使用codemirror遇到的问题
Nov 01 Javascript
vue以组件或者插件的形式实现throttle或者debounce
May 22 Javascript
javascript实现获取中文汉字拼音首字母
May 19 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中文件上传的安全问题
2006/10/09 PHP
ASP知识讲座四
2006/10/09 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
php利用cookie实现自动登录的方法
2014/12/10 PHP
Laravel5中contracts详解
2015/03/02 PHP
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
AngularJS实现一次监听多个值发生的变化
2016/08/31 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
Vuex之理解Store的用法
2017/04/19 Javascript
详解JS数据类型的值拷贝函数(深拷贝)
2017/07/13 Javascript
详解Vue微信公众号开发踩坑全记录
2017/08/21 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
web前端vue之CSS过渡效果示例
2018/01/10 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
vue store之状态管理模式的详细介绍
2019/06/13 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
Python socket编程实例详解
2015/05/27 Python
Python的Django框架安装全攻略
2015/07/15 Python
python操作字典类型的常用方法(推荐)
2016/05/16 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
Python爬虫入门教程02之笔趣阁小说爬取
2021/01/24 Python
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
应届生会计电算化求职信
2013/10/03 职场文书
学生实习自我鉴定
2013/10/11 职场文书
施工班组长岗位职责
2014/01/05 职场文书
《翻越远方的大山》教学反思
2014/04/13 职场文书
遵纪守法演讲稿
2014/05/23 职场文书
详细聊聊vue中组件的props属性
2021/11/02 Vue.js
Python 如何利用ffmpeg 处理视频素材
2021/11/27 Python