网上又很多文章都讲述了级联菜单的问题,有的用ajax+jsp,其实我也做过用ajax+jsp的级联菜单,但是若后台数据很小,又不经常变动,那么你可以用xml文件来做数据源,用javascript解析xml文件,得到里面的数据,这样就不用和后台交互了,既方便又不用浪费服务器资源,其实这也是我的初衷,哈哈,看一下代码吧。
school.xml文件代码:
<?xml version="1.0" encoding="UTF-8"?>
<university>
<college label="信息学院">
<department label="计算机"/>
<department label="测绘"/>
<department label="信息"/>
<department label="电子"/>
</college>
<college label="机电学院">
<department label="系一"/>
<department label="系二"/>
<department label="系三"/>
<department label="系四"/>
</college>
</university>
注意,建立此文件时,不要右击新建文本文档,因为这样建的文件编码格式不对,一定要按照:开始-->所有程序-->附件-->记事本,粘上上述代码后保存文件时要注意选择编码为:UTF-8。
index.html文件代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>js调用xml实现级联菜单</title>
<script type="text/javascript">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.load("school.xml");
init = function(){
var collegeNode = xmlDoc.getElementsByTagName("college");
var collegeAttributesValue;
var college_select = document.getElementById("collegeselect");
for(var i = 0;i<collegeNode.length;i++){
collegeAttributesValue = collegeNode(i).attributes.getNamedItem("label").value;
var option = new Option(collegeAttributesValue,collegeAttributesValue);
college_select.add(option);
}
}
collegechange = function(){
var j = document.getElementById("collegeselect").selectedIndex;
var collegeNode = xmlDoc.getElementsByTagName("college");
var departmentNode = collegeNode(j).childNodes;
var departmentAttributesValue;
var department_select = document.getElementById("departmentselect");
department_select.length = 0;
for(var i = 0;i<departmentNode.length;i++){
departmentAttributesValue = departmentNode(i).attributes.getNamedItem("label").value;
var option = new Option(departmentAttributesValue,departmentAttributesValue);
department_select.add(option);
}
}
</script>
</head>
<body onload="init()">
<select name="collegeselect" onChange="collegechange()"></select>
<select name="departmentselect"></select>
</body>
</html>
好了,大共告成!
你或与会问我为什么xml文件要建成那样呢!如果你玩过flex就知道了,在那里面又一个Tree的东西,Tree识别这种xml文件最好,我已经养成习惯了。等我又空了,我一定会更新一个更好的xml级联菜单,到那时,就不用attribute来获取数据了。到时代码或许会更简练。
分享到:
相关推荐
Flash配合XML做的级联菜单 比自己用JQuery做的漂亮多了 操作简单,只用配置XML文件就行了!!
xml实现级联菜单,很简单,完全不需要Ajax,但实现了Ajax的效果
使用Ajax实现级联菜单,采取XML响应方式实现,非常好用!
XML带邮编的,城市级联菜单, 有代码. Vs 2008 编写的。
XML城市级联菜单 实例 源代码 京华志&精华志出品 希望大家互相学习,互相进步 支持CSDN 支持微软
java js 城市级联菜单xml和sql版.rar
美化版的jQuery全国城市级联菜单代码实例包,Select下拉框已经过美化,比传统的灰色风格Select下拉列表更美观,城市菜单信息存放在XML文件内,若城市信息有所变动,或者想修改成其它的级联菜单,你直接修改这个文件...
该作者独到的思维见解,以及那通俗易懂的代码,非常适合初学者学习,以及对于有基础的朋友一些思维拓展是非常有帮助的!
全国城市菜单 美化版的jQuery全国城市级联菜单代码实例包,Select下拉框已经过美化,比传统的灰色风格Select下拉列表更美观,城市菜单信息存放在XML文件内,若城市信息有所变动,或者想修改成其它的级联菜单,...
使用js+xmldom+xpath实现的三级联动菜单, 以一个国标的行政区划码的xml文件为例子,展示省市县三级联动,菜单的初始值在html的hidden字段设置了山东省-青岛市-平度市。 你可以把他换成你需要xml文件,或者xml字符...
中国省市xml文档,用于下拉菜单级联变动
例子2:按需取数据—级联菜单 例子3:读取外部数据 六、AJAX的缺陷 七、AJAX开发 7.1、AJAX应用到的技术 A、XMLHttpRequest对象 B、Javascript C、DOM D、XML 7.2、AJAX开发框架 A、初始化对象并...
城市数据单独存在xml文件中,执行效率高。 初始化时可自动选择指定城市,示例: //初始化下拉菜单 InitCityList(); //自动选择默认地区 AutoSelect('福建省','龙岩市','新罗区'); </script>
最近又教js代码把以前的省市级联改的完美了一些 ...3 地区数据与显示逻辑相分离(xml数据) 4 数据标准,齐全(国土资源部数据) 博客地址 http://blog.csdn.net/shadowkiss/archive/2008/10/24/3136402.aspx
采用dwr+xml+tomcat实现三级级联菜单,代码解压即可运行
获取全国各区域的邮政编码与区号信息 使用AJAX进行数据传递...前台的JavaScript进行XML的解析,最后将数据进行整理输出。 [\getZipInfo\] 建立数据库xmlinfo,初始化data\目录下的四个数据脚本,共有记录近1万条。
使用AJAX进行数据验证时,最初使用的是XML来当数据源,然而在使用了一段时间后,发现XML效率太低,于是又使用JSON来做为数据源。一年过去了,客户又提出了新的需求,最初是只要输入框的两个数据相符就行,现在的要求...
NULL 博文链接:https://hzp.iteye.com/blog/1606504
工作时在公司带出支持无限级分类,不可多得,asp+access
这是我的独创思维,我用Ajax访问servlet,这个servlet是一个"text/xml"哦! 很经典,不信下载来看看啊,记住留言哦!