省级联动

这里写图片描述

代码如下:

<html>
    <head>
        <title>test01.html</title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <select id="province" name="province">
            <option value="">请选择....</option>
            <option value="吉林省">吉林省</option>
            <option value="辽宁省">辽宁省</option>
            <option value="山东省">山东省</option>
        </select>
        <select id="city" name="city">
            <option value="">请选择.....</option>
        </select>
    </body>
    <script language="JavaScript">
        //页面中的第一个下拉的onchange事件
        document.getElementById("province").onchange = function(){
            //获取页面中选中的省份名称
            //var provinceValue = this.value;
            //1 获取页面中选中的省份名称
            var provinceValue = document.getElementById("province").value;
            //解析xml文件
            var docXml = parseXML("cities.xml");

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

            //删除上一次选项中保存的城市
            var optionsOld = cityElement.getElementsByTagName("option");
            for(var z=optionsOld.length-1;z>0;z--){
                cityElement.removeChild(optionsOld[z]);
            }
            //遍历xml文件中的省份
            var provinceXmlElements = docXml.getElementsByTagName("province");
            //4 遍历xml文件中的所有省份

            for(var i=0 ; i < provinceXmlElements.length ; i++){
                var provinceXmlElement = provinceXmlElements[i];
                var provinceXmlValue = provinceXmlElement.getAttribute("name");

                if(provinceValue == provinceXmlValue){
                    //获取选中的province下的city标签
                    var cityXmlElements = provinceXmlElement.getElementsByTagName("city");
                    //遍历获取每个city标签
                    for(var j=0 ; j < cityXmlElements.length;j++){
                        //获取到一个city选项
                        var cityXmlElement = cityXmlElements[j];
                        //获取到这个city的子节点的值
                        var cityXmlValue = cityXmlElement.firstChild.nodeValue;

                        //把每个city   插入到第二个下拉选项框中

                        //创建option选项,并为其添加valule属性值
                        var optionElement = document.createElement("option");
                        optionElement.setAttribute("value",cityXmlValue);
                        //以cityXmlValue创建文本节点,并添加到Option下面
                        var cityText = document.createTextNode(cityXmlValue);
                        optionElement.appendChild(cityText);

                        cityElement.appendChild(optionElement);


                    }
                }

            }
        }
        /**
         * 跨浏览器的解析xml文件的函数
         * @param {Object} fileXmlName
         */
        function parseXML(fileXmlName){
            var xmlDoc;         
            try {//Internet Explorer  创建一个空的xml文档
                xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            } 
            catch (e) {
                try {//Firefox, Mozilla, Opera, 创建一个空的xml文档
                    xmlDoc = document.implementation.createDocument("", "", null);
                } 
                catch (e) {
                }
            }
            //关闭异步加载
            xmlDoc.async = false;
            //加载xml文件
            xmlDoc.load(fileXmlName);
            return xmlDoc;
        }

    </script>
</html>

city.xml文件如下

<?xml version="1.0" encoding="GB2312"?>
<china>
    <province name="吉林省">
        <city>长春</city>
        <city>吉林市</city>
        <city>四平</city>
        <city>松原</city>
        <city>通化</city>
    </province>
    <province name="辽宁省">
        <city>沈阳</city>
        <city>大连</city>
        <city>鞍山</city>
        <city>抚顺</city>
        <city>铁岭</city>
    </province>
    <province name="山东省">
        <city>济南</city>
        <city>青岛</city>
        <city>威海</city>
        <city>烟台</city>
        <city>潍坊</city>
    </province>
</china>    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值