六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 40|回复: 0

Dom解析XML文件实现省市县三级下拉菜单的实现

[复制链接]

升级  32.67%

27

主题

27

主题

27

主题

秀才

Rank: 2

积分
99
 楼主| 发表于 2013-1-29 09:29:18 | 显示全部楼层 |阅读模式

 Dom
解析XML文件实现省市县三级下拉菜单的实现

今天回顾了一下javascript,并用Dom解析XML文件实现省市县三级下拉菜单的实现。
在这当中解决了oper firefox等等浏览器的兼容问题。在oper11+浏览器中要设置一下浏览器才能兼容。
如图:

 
oper 地址栏中输入 :“aboutconfig ,会出现首选项编辑器。在user Prefs“中
把“Allow File XMLHttpRequest“勾选上才行。
Java效果实现如图:



 
下面是如何实现省市县三级菜单联动js代码:

 
   注意:详细代码在附件中并带有xml文件.
<script type="text/javascript"> function getdoc() { var xmldoc; try { xmldoc = new ActiveXObject("Microsoft.XMLDOM"); } catch (err) { try { xmldoc = document.implementation.createDocument("", "", null); } catch (e) { alert("您的浏览器实在是太低........"); } } xmldoc.async = false; xmldoc.load("city.xml"); return xmldoc; } window.onload = function() { var xmldoc = getdoc(); var root = xmldoc.documentElement; var pro = root.childNodes; var sheng = document.getElementById("pros"); var shi = document.getElementById("citys"); var xian = document.getElementById("areas"); for ( var i = 0; i < pro.length; i++) { if (pro.nodeType == 1) { var shengopt = document.createElement("option"); shengopt.appendChild(document.createTextNode(pro.getAttribute("name"))); shengopt.setAttribute("value", pro.getAttribute("postcode")); sheng.appendChild(shengopt); if(pro.getAttribute("postcode")=="100000"){ var cname=pro.childNodes; for(var j=0;j<cname.length;j++){ var cityopt = document.createElement("option"); cityopt.appendChild(document.createTextNode(cname[j].getAttribute("name"))); cityopt.setAttribute("value", cname[j].getAttribute("postcode")); shi.appendChild(cityopt); var xname=pro.childNodes; for(var k=0;k<cname.length;k++){ var xianopt = document.createElement("option"); xianopt.appendChild(document.createTextNode(xname[k].getAttribute("name"))); xianopt.setAttribute("value", xname[k].getAttribute("postcode")); xian.appendChild(xianopt); } } } } } sheng.onchange = function() { var shengs = sheng.options; var num = shengs.selectedIndex; shi.length=1; xian.length=1; var ppo = shengs[num].getAttribute("value"); for ( var i = 0; i < pro.length; i++) { if (pro.nodeType == 1) { var pos = pro.getAttribute("postcode"); shi.length=1; if (pos==ppo) { var cities = pro.childNodes; for ( var j = 0; j < cities.length; j++) { if(cities[j].nodeType ==1){ var shiopt = document.createElement("option"); shiopt.appendChild(document.createTextNode(cities[j].getAttribute("name"))); shiopt.setAttribute("value", cities[j].getAttribute("postcode")); shi.appendChild(shiopt); } } break; } } } } shi.onchange = function() { var shis = shi.options; var num = shis.selectedIndex; var spo = shis[num].getAttribute("value"); for ( var i = 0; i < pro.length; i++) { if (pro.nodeType == 1) { var citys = pro.childNodes; for ( var j = 0; j < citys.length; j++) { if (citys[j].nodeType == 1) { var opss = citys[j].getAttribute("postcode"); if (opss == spo) { xian.length=1; var areas = citys[j].childNodes; for ( var k = 0; k < areas.length; k++) { if (areas[k].nodeType == 1) { var xianopt = document.createElement("option"); xianopt.appendChild(document.createTextNode(areas[k].getAttribute("name"))); xianopt.setAttribute("value", areas[k].getAttribute("postcode")); xian.appendChild(xianopt); } } break; } } } } } } } //--> </script>
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表