Dom和XML的三级联动源码
来源:互联网 发布:网络推广销售话术 编辑:程序博客网 时间:2024/04/28 12:17
Dom和XML的三级联动源码
在二级联动(省、市)的基础上,我又写了三级联动(省、市、县),下拉列表的显示效果。
可能代码有一些乱和麻烦了,不知道大家有没有什么好的方法。
源码如下:
首先是xml文件、 cities.xml
<?xml version="1.0" encoding="UTF-8"?><china> <province name="河北"> <city name="廊坊"> <county>固安</county> <county>大城</county> <county>文安</county> <county>永清</county> <county>香河</county> </city> <city name="保定"> <county>安新</county> <county>涞水</county> <county>易县</county> <county>满城</county> </city> <city name="石家庄"> <county>赵县</county> <county>辛集</county> <county>晋州</county> <county>平山</county> </city> </province> <province name="北京"> <city name="大兴"> <county>房山</county> <county>平谷</county> <county>昌平</county> <county>海淀</county> </city> <city name="朝阳"> <county>海淀</county> <county>管庄</county> <county>高碑店</county> <county>传媒</county> </city> </province> <province name="河南"> <city name="开封"> <county>商丘</county> <county>驻马店</county> <county>平顶山</county> <county>洛阳</county> <county>郑州</county> </city> <city name="郑州"> <county>郑州市</county> <county>中原区</county> <county>上街区</county> <county>中牟县</county> <county>荥阳市</county> </city> <city name="洛阳市"> <county>汝阳</county> <county>孟津</county> <county>栾川</county> <county>洛宁</county> </city> <city name="平顶山市"> <county>新华区</county> <county>石龙区</county> <county>宝丰县</county> <county>鲁山县</county> </city> </province> <province name="陕西"> <city name="西安"> <county>新城区</county> <county>长安县</county> <county>雁塔区</county> <county>碑林县</county> </city> <city name="宝鸡"> <county>金台区</county> <county>宝鸡县</county> <county>太白</county> <county>陇县</county> </city> <city name="咸阳"> <county>渭城区</county> <county>秦都区</county> </city> <city name="兴平"> <county>永寿县</county> <county>礼泉县</county> <county>三原县</county> </city> </province><province name="四川"> <city name="成都"> <county>金堂县</county> <county>新津县</county> <county>金牛区</county> <county>武侯区</county> </city> <city name="峨眉山"> <county>夹江县</county> <county>沐川县</county> </city> </province></china>
下面是JS代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>example01.html</title><meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="this is my page"><meta http-equiv="content-type" content="text/html; charset=UTF-8"><!--<link rel="stylesheet" type="text/css" href="./styles.css">--></head><body><div align="center"><div id="data"><select id="province"><option>请选择省</option></select><select id="city"><option>请选择市</option></select><select id="county"><option>请选择县</option></select></div></div></body></html><script type="text/javascript"><!-- //窗体加载完毕后 触发函数 window.onload = function(){ var xmlDoc = parseXml("cities.xml"); //获取省 xml var provinceNodes = xmlDoc.getElementsByTagName("province"); //获取市xml var citieshtmlNodes = xmlDoc.getElementsByTagName("city"); //添加省的节点 html var provinceNode = document.getElementById("province"); //添加市的节点 html var citieshtmlNode = document.getElementById("city"); //添加县的节点 html var countieshtmlNode = document.getElementById("county"); for(var i=0;i<provinceNodes.length;i++){ //创建option html var optionNode = document.createElement("option"); var value = provinceNodes[i].getAttribute("name"); //获取 省的名称 //为option 添加文本节点 值为省的name属性的值 optionNode.appendChild(document.createTextNode(value));//option子节点 的内容设置为 省的名字 optionNode.setAttribute("value",value);//把这个省的名字 设置为 option的value值 //添加到节点中 provinceNode.appendChild(optionNode); } //当你的省发生改变的时候 选择对应的市 provinceNode.onchange = function(){ //清空 select //获取你 清空的 select 里边的所有的option节点对象 var cityhtmlOptionNodes = citieshtmlNode.getElementsByTagName("option"); //获取长度 var len = cityhtmlOptionNodes.length; //遍历 for(var m=0;m<len;m++){ // 0 是有第二个对象 cityhtmlOptionNodes[1] 代表第二个对象 不为null true null false if(cityhtmlOptionNodes[1]){ //始终移除第二个对象 citieshtmlNode.removeChild(cityhtmlOptionNodes[1]); } } //遍历所有的省 节点对象 for(var i=0;i<provinceNodes.length;i++){ //判断节点对象的值 等于 省节点的那么的值 则 获取该节点下面的所有的city节点对象 if(this.value==provinceNodes[i].getAttribute("name")){ //获取所有的city节点对象 var citiesNode = provinceNodes[i].getElementsByTagName("city"); //遍历city节点对象 for(var j=0;j<citieshtmlNode.length;j++){ //创建city节点对象的 option var cityOptionNode = document.createElement("option"); var cityName = citiesNode[j].getAttribute("name"); //为创建的option节点对象 添加文本节点对象 cityOptionNode.appendChild(document.createTextNode(cityName)); cityOptionNode.setAttribute("value",cityName); //把创建的option添加到 指定的 节点对象中 citieshtmlNode.appendChild(cityOptionNode); } } } } //当你的市发生改变的时候 选择对应的县 citieshtmlNode.onchange = function(){ //清空 select //获取你 清空的 select 里边的所有的option节点对象 var countyhtmlOptionNodes = countieshtmlNode.getElementsByTagName("option"); //获取长度 var len = countyhtmlOptionNodes.length; //遍历 for(var m=0;m<len;m++){ // 0 是有第二个对象 cityhtmlOptionNodes[1] 代表第二个对象 不为null true null false if(countyhtmlOptionNodes[1]){ //始终移除第二个对象 countieshtmlNode.removeChild(countyhtmlOptionNodes[1]); } } //遍历所有的市 节点对象 for(var i=0;i<citieshtmlNodes.length;i++){ //判断节点对象的值 等于 省节点的那么的值 则 获取该节点下面的所有的city节点对象 if(this.value==citieshtmlNodes[i].getAttribute("name")){ //获取所有的县节点对象 var countiesNode = citieshtmlNodes[i].getElementsByTagName("county"); //遍历县节点对象 for(var j=0;j<countiesNode.length;j++){ //创建county节点对象的 option var countyOptionNode = document.createElement("option"); //为创建的option节点对象 添加文本节点对象 countyOptionNode.appendChild(document.createTextNode(countiesNode[j].firstChild.nodeValue)); //把创建的option添加到 指定的 节点对象中 countieshtmlNode.appendChild(countyOptionNode); } } } } function parseXml(filename){ var xmlDoc; try{ //IE浏览器 xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); }catch(e){ try{ //非IE浏览器 xmlDoc = document.implementation.createDocument("","",null); }catch(ex){ alert("你使用的是不是浏览器呀!"); } } //关闭异步加载,这样确保在文档完全加载之前解析器不会继续脚本的执行 xmlDoc.async=false; xmlDoc.load(filename); return xmlDoc; } //JavaScript解析 xml文件 /* * html 文件 document 文档对象 节点 * xml 文件 需要创建 * xmlDoc对象 * //IE * new ActiveXObject("控件名称");//Microsoft.XMLDOM * //firefox 非IE * document.implementation.createDocument("","",null); * */ }//--></script>
运行结果如下:
- Dom和XML的三级联动源码
- dom加xml的三级联动源码
- DOM元素的获取和用法及三级联动
- Dom和xml的二级联动
- 三级省市联动菜单的JS源码
- 三级省市联动菜单的js源码
- Dom和XML的二级联动菜单详解及其源代码
- XML省市区三级联动
- 省市区三级联动-------xml
- 时间和三级联动
- Jquery+XML实现三级联动
- xml文件 省市区三级联动
- 省市县三级联动xml
- js实现的省市县三级联动的最新源码
- javascript+xml实现简单的省市县三级联动
- 使用jQuery+HttpHandler+xml模拟一个三级联动的例子
- 使用jQuery+HttpHandler+xml模拟一个三级联动的例子
- Jquery+Ajax+XML实现国家、省、市的三级联动
- 电话面试(上海阿尔卡特)
- vi操作手册
- 下载jQuery 1.6 API 中文版
- JXL读取Excel日期时间不准确
- php转换字符串大小写函数
- Dom和XML的三级联动源码
- 2008年浙江大学计算机及软件工程研究生机试真题
- PHP面向对象分析设计的61条军规
- Eigrp 的配置与说明
- JDBC连接SQL Server2008基本格式及示例代码
- 关于map task和reduce task的个数
- System memory,AGP memory和video memory
- POJ1157解题报告
- 编译cairo(win7 环境下vs2008编译cairo1.10.2 成功)