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. XSS研究2-来自内部的XSS攻击的防范

    引入: 前面我们分2篇文章分别探讨了来自外部的XSS攻击和来自内部的XSS攻击,现在我们来专门探讨如何防范来自内部的XSS攻击.   实践:  http://www.cnblogs.com/crazy ...

  2. CTF 和 PHP ,数据库

    引言 接触CTF 差不多一个月了,网上题目刷得也差不多,做了不少笔记,老想总结一下.当然,这种文章网上多得是. 正文笔记 少不了弱类型,松散比较,放一张图 2.  mysql_real_escape_ ...

  3. javascript基础-HTML5

    跨文档消息(Web Messaging cross-document messaging) 原理 往有关联(同一框架/弹出)的文档传递数据. Message Channel在javascript基础- ...

  4. 跟着刚哥深入学maven

    前言:目前所有的项目都在使用maven,可是一直没有时间去整理学习,这两天正好有时间,好好的整理一下. 一.为什么使用Maven这样的构建工具[why] ① 一个项目就是一个工程 如果项目非常庞大,就 ...

  5. iOSNsPredicate Appium 定位元素

    Appium使用WebDriverAgent之后,新增了一种定位方法iOSNsPredicate,总结了一下使用方法: MobileElement photo = driver.findElement ...

  6. WEB前端:浏览器(IE+Chrome+Firefox)常见兼容问题处理--02

    兼容问题目录 8.IE6不支持固定定位 9.IE6下前面元素浮动,后面元素不浮动后他们之间会有间隙 10.IE6下双边距问题 11.IE67下父级有边框,子级有margin的话会不起作用 12.IE6 ...

  7. vue入门须知

    1.vue基本结构 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> & ...

  8. Datatable插件的简单的使用方式 和 学习方式

    gridyxz = $("#sjjg_table_yxz").DataTable({ "searching" : false,   "info&quo ...

  9. zookeeper源码分析-server-util

    zxid (ZooKeeper Transaction Id,每次请求对应一个唯一的zxid,如果zxid a < zxid b ,则可以保证a一定发生在b之前) zookeeper采用了递增的 ...

  10. 文件描述符与FILE

    1. 文件描述符(重点) 在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件.目录文件.链接文件和设备文件.文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创 ...