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文档内容:
实现:
javascript 实现 对XML文件 2级/3级联动操作的更多相关文章
- 使用javascript中读取Xml文件做成的一个二级联动菜单
[html] view plaincopy <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> ...
- 如何使用Javascript XSLT 处理XML文件(支持Firefox)
最近使用Firefox进行网页的调试,发现有些Javascript XSLT处理XML的语句仅仅支持IE浏览器.而网络中的一些介绍javascript XSLT 处理XML的文章基本上都是依据AJAX ...
- 用dom4j解析xml文件并执行增删改查操作
转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...
- XML 对xml文件的crud的增加 create操作 增加元素 增加属性
把创建的节点挂到上一节点的最后 找到参考节点,使用insertBefore方法进行插入位置 xml添加属性使用setAttribute方法
- IE下JS读取xml文件示例代码
JS读取xml文件具体步骤为:创建DOM对象.加载xml文件(仅适用于IE)附示例代码,感兴趣的朋友可以参考下,希望对大家有所帮助使用javascript脚本读取xml文件,这里暂只考虑IE浏览器st ...
- JavaScript 解析读取XML文档 实例代码(转)
JavaScript解析读取XML文件,主要就是加载并解析XML文件,然后就可以测试解析的XML文件的内容,打印输出来. 在线演示:http://demo.jb51.net/js/2012/readx ...
- 用JAXP的dom方式解析XML文件
用JAXP的dom方式解析XML文件,实现增删改查操作 dom方式解析XML原理 XML文件 <?xml version="1.0" encoding="UTF-8 ...
- javascript读取xml文件读取节点数据的例子
分享下用javascript读取xml文件读取节点数据方法. 读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> < ...
- javascript读取xml文件
什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没 ...
随机推荐
- 开涛spring3(6.2) - AOP 之 6.2 AOP的HelloWorld
6.2.1 准备环境 首先准备开发需要的jar包 org.springframework.aop-3.0.5.RELEASE.jar com.springsource.org.aspectj.w ...
- 数据库表间多对多关系(附带额外字段)的实体类(POJO 或 POCO)表示
介绍 在之前的 Entity Framework 快速上手介绍 之中,两个实体之间只是简单的一对一关系,而在实际的应用场景中,还会出现多对多关系,同时还有可能会出现多对多关系还附带有其他字段的情况. ...
- VR全景智慧城市—你的掌上步行街
"春风十里,不如有你",不知不觉间,身边的人已对VR不再陌生,VR眼镜的热销,VR体验店的火爆,VR游戏的向往等等.可见VR就是为生活而诞生! 2015年被称作VR行业的产业元年, ...
- docker安装与学习
docker学习 以ubuntu为实例 第一步检查系统内核>3.80 第二步 安装Docker 之前先更新apt-get update 在执行安装命令 apt-get install -y do ...
- 说说ajax上传数据和接收数据
我是一个脑袋不太灵光的人,所以遇到问题,厚着脸皮去请教大神的时候,害怕被大神鄙视,但是还是被鄙视了.我说自己不要点脸面,那是不可能的,但是,为了能让自己的技术生涯能走的更长远一些,受点白眼,受点嘲笑也 ...
- [UWP]用Shape做动画(2):使用与扩展PointAnimation
上一篇几乎都在说DoubleAnimation的应用,这篇说说PointAnimation. 1. 使用PointAnimation 使用PointAnimation可以让Shape变形,但实际上没看 ...
- spring boot 入门操作(二)
spring boot入门操作 使用FastJson解析json数据 pom dependencies里添加fastjson依赖 <dependency> <groupId>c ...
- MVC在VIEW中动态控制htmlAttributes的方法
@{ IDictionary<string, object> dic = new Dictionary<string, object>(); dic.Add("cla ...
- EOS数据源的配置
EOS产品默认安装完成后的数据源为default,由于业务需要,会配置多数据源,这就有了以下的随笔: 1.在governor里面新增数据源 2.逻辑流中,数据源默认为default,根据需要改为自己新 ...
- Dockerfile命令详解(超全版本)
制作Dockerfile为Docker入门学习的第一步(当然,除了环境搭建). 本文收集.整理了官网关于制作Dockerfile的全部命令(除SHELL没整理,这个就不弄了),可帮助大家快速进入Doc ...