省市区三级级联(mark)
来源:互联网 发布:c语言中的函数格式 编辑:程序博客网 时间:2024/05/18 02:21
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb18030" /><title>三级级联训练</title><script type="text/javascript">//IE创建 xml dom的方法 function createIeXmlDom(){ var arr=['MSXML2.DOMDocument.6.0','MSXML2.DOMDocument.5.0','MSXML2.DOMDocument.4.0','MSXML2.DOMDocument.3.0','MSXML2.DOMDocument','Microsoft.XMLDOM']; for(var i=0;i<arr.length;i++){ try{ //通过MSXML的版本创建DOM return new ActiveXObject(arr[i]); }catch(ex){ return null; } } throw new Error('MSXML组件还没有安装'); }//end function judge(){ var xmlDom; if(window.ActiveXObject){ //ie下 xmlDom=createIeXmlDom(); }else if(document.implementation&&document.implementation.createDocument){ //支持W3C的浏览器 xmlDom=document.implementation.createDocument('','',null); //第一个指定文档的命名空间 根表签名 doc类xing }else{ throw new Error('您的浏览器不支持'); } return xmlDom;}window.onload=function(){//创建XMLDOMvar xmldom=judge();//同步执行方式xmldom.async=false;//载入xml文档xmldom.load('city.xml');//获取对应的标签var showsheng=document.getElementById('sheng');var showshi=document.getElementById('shi');var showxian=document.getElementById('xian');//可返回文档的根节点。var root=xmldom.documentElement;//获取根节点下的所有的节点var sheng=root.childNodes;//变量所有的省份,并添加到showshengfor(var i=0;i<sheng.length;i++){addOption(sheng[i],showsheng);}var city;showsheng.onchange=function(){//获取被选择省份的index下标var index=showsheng.options.selectedIndex; showshi.length=1;//清空原来的市区showxian.length=1;//清空原来的县var flag;if(window.ActiveXObject){//ie下city=sheng[index-1].childNodes;//获取选中的省份下面的所有子节点for(var i=0;i<city.length;i++){addOption(city[i],showshi);}}else{//w3c下var sname=showsheng.value;var proname;var citiesfor(i=0;i<sheng.length;i++){ if(sheng[i].nodeType==1){//是元素节点时 proname=sheng[i].getAttribute('name');; if(sname==proname){ cities=sheng[i].childNodes; for(var j=0;j<cities.length;j++){ if(cities[j].nodeType==1){ addOption(cities[j],showshi); } } }}}}}var xian;showshi.onchange=function(){var index=showshi.options.selectedIndex;showxian.length=1;//清空原来的县var flag;if(window.ActiveXObject){xian=city[index-1].childNodes;//获取选中的省份下面的所有子节点for(var i=0;i<xian.length;i++){addOption(xian[i],showxian);}}else{var cname=showshi.value;var xians;var cityname;var cities;for(i=0;i<sheng.length;i++){ if(sheng[i].nodeType==1){ cities=sheng[i].childNodes; for(var j=0;j<cities.length;j++){ if(cities[j].nodeType==1){ cityname=cities[j].getAttribute('name'); if(cityname==cname){ xians=cities[j].childNodes; for(var k=0;k<xians.length;k++){ if(xians[k].nodeType==1){ addOption(xians[k],showxian); } } } } } }}}}}function addOption(arrs,obj){ if(arrs.nodeType==1){//创建元素节点var opt=document.createElement('option');//创建文本节点opt.appendChild(document.createTextNode(arrs.getAttribute('name')));opt.setAttribute('value',arrs.getAttribute('name'));//把option附加上去obj.appendChild(opt);}}</script></head><body><div> <select id="sheng" style="width:160px"><option value="0">请选择省份</option></select>省份<br /> <select id="shi" style="width:160px"><option value="0">请选择市区</option></select>市区<br /> <select id="xian" style="width:160px"><option value="0">请选择县</option></select>县<br /> </div></body></html>