Dom和XML的二级联动菜单详解及其源代码

 

Dom和XML的二级联动菜单详解及其源代码

 

Xml文件: cities2.xml

<?xml version="1.0" encoding="UTF-8"?>

<china>

  <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>

  <province name="陕西">

       <city>西安</city>

       <city>宝鸡</city>

       <city>兴平</city>

  </province>

    <province name="四川">

        <city>成都</city>

       <city>重庆</city>

        <city>内江</city>

       <city>乐山</city>

       <city>南充</city>

  </province>

</china>


 

Html文件:liandong2.html

省 、市的二级联动菜单

效果如下:

 

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

       <title>liandong2.html</title>

    </head>

//样式部分

    <body>

       <div align="center">

           <div id="data">

           <!—用下拉列表的形式表示省 和市-à

              <select id="province">

                  <option>

                     请选择省

                  </option>

              </select>

              <select id="city">

                  <option>

                     请选择市

                  </option>

              </select>

           </div>

       </div>

    </body>

</html>

//JS部分

<script type="text/javascript">

<!--

     //窗体加载完毕后  触发函数

     window.onload = function(){

            var xmlDoc = parseXml("cities2.xml");

            //获取省 xml

            var provinceNodes = xmlDoc.getElementsByTagName("province");

            //添加省的节点 html

            var provinceNode = document.getElementById("province");          

            //添加市的节点  html

            var citieshtmlNode= document.getElementById("city");          

            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<citiesNode.length;j++){

                         //创建city节点对象的 option

                         var cityOptionNode = document.createElement("option");

                         //为创建的option节点对象 添加文本节点对象

                 

                         cityOptionNode.appendChild(document.createTextNode(citiesNode[j].firstChild.nodeValue));

                         //把创建的option添加到 指定的 节点对象中

                         citieshtmlNode.appendChild(cityOptionNode);

                     }

                   }

              }

            } 

     }  

   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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值