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

实现:

实现页面

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

  1. 使用javascript中读取Xml文件做成的一个二级联动菜单

    [html] view plaincopy <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ...

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

    最近使用Firefox进行网页的调试,发现有些Javascript XSLT处理XML的语句仅仅支持IE浏览器.而网络中的一些介绍javascript XSLT 处理XML的文章基本上都是依据AJAX ...

  3. 用dom4j解析xml文件并执行增删改查操作

    转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...

  4. XML 对xml文件的crud的增加 create操作 增加元素 增加属性

    把创建的节点挂到上一节点的最后 找到参考节点,使用insertBefore方法进行插入位置 xml添加属性使用setAttribute方法

  5. IE下JS读取xml文件示例代码

    JS读取xml文件具体步骤为:创建DOM对象.加载xml文件(仅适用于IE)附示例代码,感兴趣的朋友可以参考下,希望对大家有所帮助使用javascript脚本读取xml文件,这里暂只考虑IE浏览器st ...

  6. JavaScript 解析读取XML文档 实例代码(转)

    JavaScript解析读取XML文件,主要就是加载并解析XML文件,然后就可以测试解析的XML文件的内容,打印输出来. 在线演示:http://demo.jb51.net/js/2012/readx ...

  7. 用JAXP的dom方式解析XML文件

    用JAXP的dom方式解析XML文件,实现增删改查操作 dom方式解析XML原理 XML文件 <?xml version="1.0" encoding="UTF-8 ...

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

    分享下用javascript读取xml文件读取节点数据方法. 读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> < ...

  9. javascript读取xml文件

    什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没 ...

随机推荐

  1. vue+vux+axios+vuex+vue-router的项目的理解

    本文主要是讲解项目前期的工作,后期考虑再详细说明. 作为一个技术团队如果你们团队选择了上面的技术栈,这说明你们的技术团体对于vue有很熟练的掌握了.在这里我想说明的是前期架构的重要.这里有一遍博客写的 ...

  2. 你对SpringMvc是如何理解的?

    SpringMVC工作原理 SpringMvc是基于过滤器对servlet进行了封装的一个框架,我们使用的时候就是在web.xml文件中配置DispatcherServlet类:SpringMvc工作 ...

  3. Zepto源码分析-event模块

    源码注释 // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT l ...

  4. Predix Asset Service深度分析

    前言 在IIOT领域,面临着保存海量数据的挑战,具体到Asset层面,则要保存物理对象,逻辑对象,复杂的关系,并支持对象间的组合,分类,标签和高效查询.总结来说,可以归纳为如下几种需求:   灵活的建 ...

  5. Java之线程同步练习

    1.有一张银行卡:*属性:name,money(账户余额)* 多线程操作同一张银行卡: 金额:x(每次存钱取钱的数额,取钱时x为负数,存钱时x为整数) 定义一个add方法:用于存取钱,参数为x,即每次 ...

  6. 什么是 html 标签,html 实体

    为什么需要转换 更简了,因为有时候我们需要在浏览器页面中显示 html 标签,然而直接输出<script>alert(1)</script>,在浏览页面时将会被当作 html ...

  7. node.js入门系列(一)--Node.js简介

    什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是一 ...

  8. MyBB 18 SQL Injection Vulnerability

    <?php error_reporting(0); ?> <form method="post" action=""> Input a ...

  9. 各种Web漏洞测试平台

    Sqli Lab​支持报错注入.二次注入.盲注.Update注入.Insert注入.Http头部注入.二次注入练习等.支持GET和POST两种方式. https://github.com/Audi-1 ...

  10. CentOS升级Python2.7导致使用pip等命令安装模块失败

    报错如下: # pip Traceback (most recent call last): File , in <module> from pkg_resources import lo ...