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:

<body>
    js三级联动实现地址选取:
	<select id="state" name="state"></select>
	<select id="city" name="city"></select>
	<select id="region" name="region"></select>
  </body>

xml文档内容:

xml文档

实现:

实现页面

时间: 2024-08-11 01:34:22

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

如何使用Javascript XSLT 处理XML文件(支持Firefox)

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

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

Android中Pull解析器解析xml文件案例

首先 准备一个供解析的xml文件,这里我们假定要解析的文件名称为person.xml,文件的具体内容为: <?xml version="1.0" encoding="utf-8"?> <persons> <person id="23"> <name>liming</name> <age>23</age> </person> </persons&g

C# 遍历XML文件,添加,更新,删除节点

一,将XML文件添加到text文本中: 方法1,最简单方式 1 private void ReadFile() 2 3 { 4 5 string path = Application.StartupPath + @"/bookstore.xml"; 6 7 byte[] myByte; 8 9 //File.OpenRead(path); 10 11 myByte = File.ReadAllBytes(path); 12 13 this.textBox1.Text = string.

JavaScript控制XML文件数据

1.提供好 XML文件的数据源: <?xml version="1.0" encoding="UTF-8"?> <CATALOG> <CD> <TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</

javascript读取xml文件读取节点数据的例子

分享下用javascript读取xml文件读取节点数据方法. 读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> <script type="text/javascript"> var objLength = null; var xmlHttp; var strurl = ""; function ajaxrequst() { if (window.ActiveXObject

浅谈关于JavaScript解析XML文件的注意事项

之前在重庆农商行的时候做项目,涉及到一个级联的功能,需要从XML中读取数据存到select框中. 开始的时候一直出错,首先是火狐浏览器报错.但是IE正常,后来是火狐浏览器不报错了但是不显示.而IE依然显示. 经过一番仔细的研究,总算解决了问题,下面我总结一下, 希望给更多的人带来帮助. 首先呢,是页面加载的时候要把数据从XML中读取并且存入select中的option . 以下是详细的代码 第一步:以下是我所定义的XML代码 名称为school.xml <?xml version="1.0

【JavaScript】JS读取XML文件并进行搜索

需求效果 点击链接.当前页面载入xml文件并展示相应内容 通过搜索框.搜索xml文件内节点数据.展示包括内容的节点数据 功能实现 Demo终于实现效果 http://loadxmldemo.coderfix.cn/ 核心代码 String.prototype.replaceAll = function (s1, s2) { return this.replace(new RegExp(s1, "gm"), s2); } //查询和标签 function GetXmlByQuery(st

javascript读取xml文件

什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没有被预定义.您需要自行定义标签. XML 被设计为具有自我描述性. XML 是 W3C 的推荐标准 XML文件 <note> <id>1</id> <name>SevenNight</name> <sex>男</sex> &l