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 标签没 ...
随机推荐
- jquery和vue对比
1.jquery介绍:想必大家都用过jquery吧,这个曾经也是现在依然最流行的web前端js库,可是现在无论是国内还是国外他的使用率正在渐渐被其他的js库所代替,随着浏览器厂商对HTML5规范统一遵 ...
- kafka 0.10.2 部署失败后,重新部署
删除kafka各个节点log目录 删除zookeeper上kafka相关的目录 [root@m1 ~]# zkCli.sh Connecting to localhost: -- ::, [myid: ...
- elasticsearch 不能通过9200端口访问
修改配置文件 config/elasticsearch.yml network.host: 0.0.0.0
- netty心跳机制测试
netty中有比较完善的心跳机制,(在基础server版本基础上[netty基础--基本收发])添加少量代码即可实现对心跳的监测和处理. 1 server端channel中加入心跳处理机制 // Id ...
- poi jsp xls
poi jsp xls <%@ page language="java" pageEncoding="UTF-8"import="java.ut ...
- Nmap绕过防火墙&脚本的使用
Nmap是用于端口扫描,服务检测,甚至是漏洞扫描等多种功能的强大工具.Nmap从入门到高级覆盖了许多基础的概念和命令,在这篇文章的第二部分,我将提及Nmap一些高级的技术. 防火墙和入侵检测系统(ID ...
- [转] DDD领域驱动设计(三) 之 理论知识收集汇总
最近一直在学习领域驱动设计(DDD)的理论知识,从网上搜集了一些个人认为比较有价值的东西,贴出来和大家分享一下: 我一直觉得不要盲目相信权威,比如不能一谈起领域驱动设计,就一定认为国外的那个Eric ...
- [0] 服务器 TCP 提供程序无法在 [ 'any' <ipv4> *] 上侦听。TCP 端口已在使用中。
配置工具——配置管理器——SQLEXPRESS协议下的TCP/IP协议 将其已启用改为禁用. 同时停止SQLEXPRESS服务即可
- [POJ 2115} C Looooops 题解(扩展欧几里德)
题目描述 对于C的for(i=A ; i!=B ;i +=C)循环语句,给出A,B,C和k(k表示变量是在k进制下的无符号整数),判断循环次数,不能终止输出"FOREVER". 输 ...
- vue中使用stompjs实现mqtt消息推送通知
最近在研究vue+webAPI进行前后端分离,在一些如前端定时循环请求后台接口判断状态等应用场景用使用mqtt进行主动的消息推送能够很大程度的减小服务端接口的压力,提高系统的效率,而且可以利用mqtt ...