javascript 实现 对XML文件 2级/3级联动操作

js代码

//实现对xml文档的读取:
function loadXMLDoc(dname) {
    try // Internet Explorer
    {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    } catch (e) {
        try // Firefox, Mozilla, Opera, etc.
        {
            xmlDoc = document.implementation.createDocument("", "", null);
        } catch (e) {
            alert(e.message)
        }
    }
    try {
        xmlDoc.async = false;
        xmlDoc.load(dname);//加载xml文档
        return (xmlDoc);
    } catch (e) {
        alert(e.message)
    }
    return (null);
}

//实现对xml文档的操作:  var stateSelectObj = document.getElementById("state");
            var citySelectObj = document.getElementById("city");
            var regionSelectObj = document.getElementById("region");
            //初始化一个请选择:html dom
            stateSelectObj.add(new Option("--请选择--",""));
            citySelectObj.add(new Option("--请选择--",""));
            regionSelectObj.add(new Option("--请选择--",""));

            //从XML中读取所有的省份,给stateSelect赋值
            var xmlDoc = loadXMLDoc("LocList.xml");//获取到代表XML文件的那个Document对象
            var xmlStateNodes = xmlDoc.getElementsByTagName("State");
            for(var i=0;i<xmlStateNodes.length;i++){
                var xmlStateName = xmlStateNodes[i].getAttribute("Name");
                var xmlStateCode = xmlStateNodes[i].getAttribute("Code");
                stateSelectObj.add(new Option(xmlStateName,xmlStateCode));
            }

            //给省份select注册onchange事件
            stateSelectObj.onchange=function(){
                //清空
                citySelectObj.length=0;

                citySelectObj.add(new Option("--请选择--",""));

                if(this.value!=""){
                    for(var i=0;i<xmlStateNodes.length;i++){
                        //在xml中查找所有的State标签,看谁的Code属性和value值一样
                        var xmlStateCode = xmlStateNodes[i].getAttribute("Code");
                        if(this.value==xmlStateCode){
                            //调用该标签的getElementsByTagName,找到子标签。
                            var xmlCityNodes = xmlStateNodes[i].getElementsByTagName("City");
                            for(var j=0;j<xmlCityNodes.length;j++){
                                var xmlCityName = xmlCityNodes[j].getAttribute("Name");
                                var xmlCityCode = xmlCityNodes[j].getAttribute("Code");
                                //添加城市html
                                citySelectObj.add(new Option(xmlCityName,xmlCityCode));
                            }
                            break;
                        }

                    }
                }
            }

            //给市级城市添加onchange事件
            citySelectObj.onchange=function()
            {
                //清空
                regionSelectObj.length=0;
                regionSelectObj.add(new Option("--请选择--",""));

                if(this.value!="")
                {
                    for(var i=0;i<xmlStateNodes.length;i++)
                    {
                        var xmlStateCode = xmlStateNodes[i].getAttribute("Code");
                        if(stateSelectObj.value==xmlStateCode)
                        {
                            var xmlCityNodes = xmlStateNodes[i].getElementsByTagName("City");
                            for(var j=0;j<xmlCityNodes.length;j++)
                            {
                                if(this.value==xmlCityNodes[j].getAttribute("Code"))
                                {
                                    var xmlregionNodes = xmlCityNodes[j].getElementsByTagName("Region");
                                        for(var k=0;k<xmlregionNodes.length;k++)
                                        {
                                            var xmlregionName = xmlregionNodes[k].getAttribute("Name");
                                            var xmlregionCode = xmlregionNodes[k].getAttribute("Code");
                                            //添加城市html
                                            regionSelectObj.add(new Option(xmlregionName,xmlregionCode));
                                        }

                                }
                            }
                        }
                    }
                }
            }
        

 

 html:


1

2

3

4

5

6

<body>

    js三级联动实现地址选取:

    <select id="state" name="state"></select>

    <select id="city" name="city"></select>

    <select id="region" name="region"></select>

  </body>

xml文档内容:

xml文档

实现:

实现页面

时间: 2024-09-05 06:31:43

javascript 实现 对XML文件 2级/3级联动操作的相关文章

兼容Firefox的Javascript XSLT 处理XML文件_javascript技巧

最近使用Firefox进行网页的调试,发现有些Javascript XSLT处理XML的语句仅仅支持IE浏览器.而网络中的一些介绍javascript XSLT 处理XML的文章基本上都是依据AJAX来做的.     无奈中,自己写了一个Javascript XSLT处理XML展现页面的小功能.现在帖出来和大家共享,希望大家给点改进意见.     在Firefox中使用XSLTProcessor对象处理XML,主要使用该对象的两个方法: 一.transformToFragment(). 二.tr

jquery读取xml文件实现省市县三级联动的方法

  本文实例讲述了jquery读取xml文件实现省市县三级联动的方法.分享给大家供大家参考.具体如下: 页面代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66

jquery读取xml文件实现省市县三级联动的方法_jquery

本文实例讲述了jquery读取xml文件实现省市县三级联动的方法.分享给大家供大家参考.具体如下: 页面代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'city.jsp' starting p

xml文件的读写,添加,修改,删除操作

xml文件的读写,添加,修改,删除操作 using system; using system.collections; using system.componentmodel; using system.data; using system.drawing; using system.web; using system.web.sessionstate; using system.web.ui; using system.web.ui.webcontrols; using system.web.

Javascript+DOM访问XML文件数据实例

dom|javascript|xml|访问|数据 1.生成XML文件. 在ADO里,用Recordset.Save方法可以保存查询内容至指定XML文件,这样生成的文件里面有很多内容是关于数据表的属性的,即<s:Schema></s:Schema>节点内容.我们需要的是<rs:data></rs:data>节点的内容.结构大体如下:Data.xml <xml ...> <s:Schema> ... </s:Schema> &

SQLSERVER 2005中使用sql语句对xml文件和其数据的进行操作(很全面)_mssql2005

--用SQL多条可以将多条数据组成一棵XML树L一次插入 --将XML树作为varchar参数传入用 --insert xx select xxx from openxml() 的语法插入数据 -----------------------------------导入,导出xml-------------------------- --1导入实例 --单个表 create table Xmltable(Name nvarchar(20),Nowtime nvarchar(20)) declare

asp.net 对xml文件的读写,添加,修改,删除操作

下面有代码调试正确 using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Drawing;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.HtmlControls;usi

javascript读取Xml文件做一个二级联动菜单示例

 这篇文章主要介绍了使用javascript中读取Xml文件做成的一个二级联动菜单,需要的朋友可以参考下  代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  <html>  <head>  <title>menu2level.html</title>  <meta http-equiv="content-type&quo

javascript实现加载xml文件的方法_javascript技巧

本文实例讲述了javascript加载xml文件的方法.分享给大家供大家参考,具体如下: //需要读取的xml文件 var uRl = "jsReadXml.xml"; var xmlDoc; //初始化,给上述定义变量赋值 // function showcurcity(){ if(window.ActiveXObject) { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="fal