dom加xml的三级联动源码
找了半天的bug,那么长时间,郁闷死了,晚上都没有睡好觉。就一个最简单的buy,不是某个单词写的不对,而是命名重复!!!!!!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>example01.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=GBK">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<!--三级联动-->
<div align="center">
<div id="data">
<select id="province">
<option>请选择省</option>
</select>
<select id="city">
<option>请选择市</option>
</select>
<select id="country">
<option>请选择县</option>
</select>
</div>
</div>
</body>
</html>
<script type="text/javascript">
window.onload = function(){
var xmlDoc = parseXml("/day01/cities.xml");
//获取省 xml
var provinceNodes = xmlDoc.getElementsByTagName("province");
var cityNodes = xmlDoc.getElementsByTagName("city");
//alert(cityNodes.length);
//添加省的节点
var provinceNode = document.getElementById("province");
//获取市的节点
var citiesHtmlNode = document.getElementById("city");
// 添加县的节点
var countryNode = document.getElementById("country");
//alert(countryNode);
for (var i = 0; i < provinceNodes.length; i++) {
//创建option html
var optionNode = document.createElement("option");
//获取省的名称
var value = provinceNodes[i].getAttribute("name");
//为option添加文本节点 值为省的name属性值
optionNode.appendChild(document.createTextNode(value));
optionNode.setAttribute("value", value); //为添加的option设置值
//添加到节点中
provinceNode.appendChild(optionNode);
}
//添加市
provinceNode.onchange = function(){
//清空原有的的节点
//获取清空的select里面的所有的option对象
var cityHtmlOptionNodes = citiesHtmlNode.getElementsByTagName("option");//获取的是所有的option
//获取长度
var len = cityHtmlOptionNodes.length;
for (var m = 0; m < len; m++) {
//看是否有第一个对象,【1】代表的第二个对象,如果不为空
if (cityHtmlOptionNodes[1]) {
//始终移除第二个对象
citiesHtmlNode.removeChild(cityHtmlOptionNodes[1]);
}
}
//添加市的名称
for (var i = 0; i < provinceNodes.length; i++) {
//判断点击的是否是value
if (this.value == provinceNodes[i].getAttribute("name")) {
//通过省节点来找到city节点对象
var citiesNode = provinceNodes[i].getElementsByTagName("city");
alert(citiesNode.length);
//遍历city到city的select中
for (var j = 0; j < citiesNode.length; j++) {
//alert(citiesNode.length);
var cityOptionNode = document.createElement("option");
//为创建的option对象添加文本
var value = citiesNode[j].firstChild.nodeValue;
//alert(value);
cityOptionNode.appendChild(document.createTextNode(value));
//把创建的对象添加到city中
citiesHtmlNode.appendChild(cityOptionNode);
}
}
}
}
//添加县
citiesHtmlNode.onchange = function(){
//删除元素
//或得到option的元素来删除
var optionNodes = countryNode.getElementsByTagName("option");
var len = optionNodes.length;
for (var m = 0; m < len; m++) {
if (optionNodes[1]) {
countryNode.removeChild(optionNodes[1]);
}
}
for (var i = 0; i < cityNodes.length; i++) {
// alert(cityNodes.length);
//判断点击的是否是value
if (this.value == cityNodes[i].getAttribute("name")) {
//alert(this.value.length);
//通过省节点来找到city节点对象
var countryNodes = cityNodes[i].getElementsByTagName("country");
//alert(countryNode.length);
//遍历city到city的select中
for (var j = 0; j < countryNodes.length; j++) {
// alert(countryNode.length);
var countryOptionNode = document.createElement("option");
//为创建的option对象添加文本
var value = countryNodes[j].firstChild.nodeValue;
//alert(value);
countryOptionNode.appendChild(document.createTextNode(value));
//把创建的对象添加到city中
countryNode.appendChild(countryOptionNode);
}
}
}
}
}
//用js解析xml文件
/*
* html文档 是document文档对象 节点
* xml 文件 需要创建
* 根据不同的浏览器有不同的创建方式
* 在IE中需要一个空间名称来创建
* @param {Object} id
*/
//解析xml文档
function parseXml(filename){
var xmlDoc;
try {
//IE浏览器
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
}
catch (e) {
try {
//非IE浏览器
xmlDoc = document.implementation.createDocument("", "", null);
}
catch (ex) {
alert("你使用的是不是浏览器呀!");
}
}
//解析的时候是异步还是同步,设置为false,是关闭异步加载,这样确保在文档完全加载之前不会继续脚本的执行
xmlDoc.async = false;
xmlDoc.load(filename);
return xmlDoc;
}
</script>
xml文件:
<?xml version="1.0" encoding="GBK"?>
<china>
<province name="河北">
<city name="石家庄">石家庄
<country>文安县</country>
<country>固安县</country>
<country>魏县</country>
</city>
<city name="廊坊">廊坊
<country>文安县</country>
<country>固安县</country>
<country>魏县</country>
</city>
<city name="保定">保定
<country>徐水县</country>
<country>涿州县</country>
<country>魏县</country>
</city>
<city name="邢台">邢台
<country>巨鹿县</country>
<country>宁晋县</country>
<country>隆尧县</country>
</city>
<city name="沧州">沧州
<country>巨鹿县</country>
<country>宁晋县</country>
<country>隆尧县</country>
</city>
<city name="衡水">衡水
<country>巨鹿县</country>
<country>宁晋县</country>
<country>隆尧县</country>
</city>
</province>
<province name="北京">
<city>朝阳</city>
<city>海淀</city>
</province>
<province name="河南">
<city>开封</city>
<city>商丘</city>
<city>驻马店</city>
<city>平顶山</city>
<city>洛阳</city>
<city>郑州</city>
</province>
<province name="安徽">
<city>阜阳</city>
<city>亳州</city>
<city>合肥</city>
</province>
</china>
分享到:
相关推荐
在这个“三级联动源码以及数据库.rar”压缩包中,我们主要会涉及到以下几个关键知识点: 1. **Servlet**:Servlet是Java Web开发中的核心组件,它主要用于处理HTTP请求,向客户端返回响应。在本项目中,Servlet扮演...
省市县三级联动源码是一种常见的前端开发技术,用于在网页上实现地区选择功能,用户可以选择国家、省份、城市,直到具体的区县。这种技术在注册、填写地址等场景中非常常见,尤其在中国,由于行政区域划分较为复杂,...
“ajax,struts2,json实现省市区三级联动源码含全国省市区数据库”这一标题揭示了这个压缩包包含的是一项使用AJAX、Struts2和JSON技术来实现的省市区三级联动功能的源代码。这项技术常用于web应用中,允许用户在选择...
在实现三级联动时,jQuery可以用来绑定事件(如改变省份的选择),发送Ajax请求,以及更新DOM元素(显示新的城市或区县列表)。 3. **JSON数据格式**:Ajax请求的响应通常是以JSON格式返回的,这是一种轻量级的数据...
在这个"利用ajax和WebService实现的无刷新三级联动源码"中,我们可以深入理解如何结合这两种技术来创建高效、流畅的用户体验。 1. **Ajax(Asynchronous JavaScript and XML)**: Ajax的核心是通过JavaScript异步...
这个示例文件“商业编程-源码-XML无刷新三级联动下拉DropDownList示例.zip”显然是为了演示如何在商业应用中实现这种功能。下面我们将详细探讨这个技术知识点。 首先,XML是一种结构化数据存储格式,常用于数据交换...
在IT行业中,尤其是在前端开发领域,"仿淘宝商品发布三级联动菜单"是一个常见的需求,它涉及到用户界面(UI)设计、交互逻辑以及响应式网页技术。这个项目是基于H5(HTML5)编写的,目的是为了创建一个与淘宝网站...
在网页开发中,"Ajax省市三级联动"是一个常见的功能需求,尤其在地址选择、订单填写等场景中。这个功能主要用于实现省、市、区(县)的联动选择,即用户在选择一个省份后,市的选择项会自动更新,再选择一个市,区县...
在JavaWeb开发中,省市县三级联动是一种常见的功能,它用于在用户选择省份时自动更新城市选项,选择城市时更新县区选项。这种交互方式提高了用户体验,尤其在填写地址或选择服务区域时非常实用。本案例中,我们将...
在三级城市联动中,Ajax的主要职责是异步向服务器发送请求,获取数据,然后使用JavaScript动态地更新DOM元素,展示三级城市信息。这样可以避免页面频繁跳转,提高用户体验。 PHP作为后端语言,负责处理Ajax请求并...
HTML5手机端三级联动城市选择代码是...总的来说,HTML5手机端三级联动城市选择代码是结合了HTML5、JavaScript(包括AJAX、DOM操作和事件处理)、以及可能的前端框架技术的产物,它为移动用户提供了便捷的地区选择体验。
在IT行业中,开发一个能够实现省市县三级联动的系统是一项常见的需求,特别是在处理地理信息或者地址选择时。这个"php+ajax+mysql省市县三级联动"的资源提供了一个基于PHP、Ajax和MySQL实现的示例,它可以帮助初学者...
【Ajax无刷新三级联动】是一种常见的前端交互技术,主要用于网页数据的动态加载,无需刷新整个页面即可实现数据的联动更新。这种技术的核心是利用Ajax(Asynchronous JavaScript and XML)异步通信,配合JavaScript...
在本资源"Ajax四级联动源代码"中,我们探讨的是一种利用Ajax实现的城市选择的四级联动效果,这在很多网站的地址输入、筛选功能中常见。四级联动通常指的是省-市-区-街道的逐级下拉菜单,用户选择一个层级后,下一...
在这个名为"MyAjaxDemo"的源码中,开发者可能已经实现了上述的Ajax三级联动和无刷新分页功能。通过对源码的分析和学习,我们可以深入理解这两种技术的实现细节,包括如何组织Ajax请求,如何处理服务器返回的数据,...
标题 "DWR实现省市县三级联动小例子" 暗示了这个压缩包可能包含一个使用Direct Web Remoting (DWR) 技术构建的示例项目,该示例展示了如何实现在网页上进行省、市、县三级联动选择的功能。这种功能在很多中国的网站...
在这个特定的项目中,"ASP.NET 采用Ajax三级联动和无刷新分页源码",我们主要探讨的是两个关键特性:Ajax(异步JavaScript和XML)技术和三级联动以及无刷新分页。 **Ajax** 技术的核心在于它可以实现页面的部分更新...
在网页设计中,"省市区(县)三级联动下拉列表"是一种常见的用户界面元素,主要用于用户选择他们的地理位置。这种功能通常在注册、填写地址或定位服务时使用。以下是关于这个话题的详细知识点: 1. **三级联动**:...
综上所述,实现“jQuery各种插件和JQuery Ajax三级联动地区下拉框”涉及到jQuery库、插件开发、AJAX交互、DOM操作和性能优化等多个方面。这个功能不仅实用,而且对于学习和理解JavaScript和jQuery的深入使用非常有...
在JavaScript中处理XML数据时,可能会遇到浏览器兼容性问题,因为...而实现省市区三级联动,则需要熟练掌握DOM操作和事件监听,以及从XML数据中提取和组织信息。通过这些技术,我们可以创建更健壮、用户友好的Web应用。