js实现“级联菜单”
<!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=gb2312" />
<title>级联效果</title>
<script language="javascript" type="text/javascript">
window.onload = function(){
document.getElementById("province").onchange = function(){
var changeProvinceValue = this.value;//获取省变化的值
var cityElement = document.getElementById("city");//清空下拉选项的值
var cityoptionElements = cityElement.getElementsByTagName("option");
for(var i=cityoptionElements.length -1 ;i >0;i--){
cityElement.removeChild(cityoptionElements[i]);
}
//测试xml是否加载成功
var xmldoc = parseXml("city.xml");
var provinceElement= null;
//定位到具体省
var xmlProvinceElements = xmldoc.getElementsByTagName("province");
for(var i=0;i<xmlProvinceElements.length;i++){
var xmlProvinceElement=xmlProvinceElements[i];
var nameAttribute =xmlProvinceElement.getAttribute("name");
if(changeProvinceValue == nameAttribute){
provinceElement = xmlProvinceElement;
break;
}
}
if(provinceElement != null){
var xmlCityElements=provinceElement.getElementsByTagName("city");
for(var i=0 ; i<xmlCityElements.length;i++){
var cityValue=xmlCityElements[i].firstChild.nodeValue;
var optionElement=document.createElement("option");
optionElement.setAttribute("value",cityValue);
var cityTextElement=document.createTextNode(cityValue);
optionElement.appendChild(cityTextElement); var cityElement=document.getElementById("city");
cityElement.appendChild(optionElement);
}
}
}
}
function parseXml(filename){
try{
xmldoc =new ActiveXObject("Microsoft.XMLDOM");
}
catch(e){
try{
xmldoc= document.implementation.createDocument("","",null);
}
catch(e){}
}
xmldoc.async = false;
xmldoc.load(filename);
return xmldoc;
}
</script>
</head> <body>
<select id="province" name="province">
<option value="">请选择</option>
<option value="吉林省">吉林省</option>
<option value="山东省">山东省</option>
<option value="辽宁省">辽宁省</option>
</select>
<select id="city" name="city">
<option value="">请选择</option>
</select>
</body> </html>
以下是xml文件(city.xml):
<?xml version="1.0" encoding="GB2312"?>
<china>
<province name="吉林省">
<city>长春</city>
<city>松原</city>
<city>通化</city>
<city>四平</city>
</province>
<province name="辽宁省">
<city>沈阳</city>
<city>大连</city>
<city>鞍山</city>
<city>抚顺</city>
</province>
<province name="山东省">
<city>威海</city>
<city>济南</city>
<city>青岛</city>
<city>烟台</city>
</province>
</china>
效果:
下拉选择山东,右边的下拉出现相对应的城市。
js实现“级联菜单”的更多相关文章
- JS动态级联菜单
JS动态级联菜单是前端常用的一个功能,特此抽时间研究了下,附上代码 <html> <head> <meta charset="utf-8" /> ...
- JS实战 · 级联菜单选择省份和城市(两种)
DOM编程步骤.思路 1.定义界面: 通过html标签将数据进行封装: 2.定义一些静态样式: 利用css: 3.需要动态地完成的和用户的交互: a:明确事件源: ...
- js实现级联菜单(没有后台)
html代码: <!-- js级联菜单 --> <div id="cascMenu"> <select id="select" o ...
- JS实现级联菜单
是首先应该添加两个下拉列表并设置id属性来方便操作: <select id="country"> <option>国家</option> < ...
- js进阶 9-12 js如何实现级联菜单 (章节测试)
js进阶 9-12 js如何实现级联菜单 (章节测试) 一.总结 一句话总结: 1.js如何实现级联菜单 ? 二维数组,以第一级菜单的文本值做键,以对应的二级菜单选项的文本做值 2.用哪个属性可以获 ...
- 前台JS(Jquery)调用后台方法 无刷新级联菜单示例
前台用AJAX直接调用后台方法,老有人发帖提问,没事做个示例 下面是做的一个前台用JQUERY,AJAX调用后台方法做的无刷新级联菜单 http://www.dtan.so CasMenu.aspx页 ...
- 使用json方式实现省市两级下拉级联菜单[原创]
本文为博主原创,转载请注明. 首先看一下实现后的效果图: 当然,要完成这个实验,mysql必须与数据库连接,这里选用navicat for mysql这款软件,它与mysql的契合度是很高的,配置环境 ...
- Ajax实现动态的二级级联菜单
今天花了点时间用Ajax实现了一个二级级联菜单.整理总结一下.为了把重点放在Ajax和级联菜单的实现上,本文省略了数据库建表语句和操作数据库的代码! 数据库建表语句就不帖出来了.主要有两张表,区域表: ...
- js省市级联实现
js省市级联实现. for [element] in [collection] 用于循环下标,常用于json for(index in arr){ console.info("下标:&quo ...
随机推荐
- 17.使用原生cross-fiels技术解决搜索弊端
主要知识点: 原生cross-fiels的用法 原生cross-fiels解决三个弊端 一.原生cross-fiels的用法 GET /forum/article/_search { ...
- Python模块 os.walk
Os.walk os.walk(top,topdown=True,onerror=None,followlinks=False) os.walk()是python中内置(built-in)的目录树生成 ...
- 20170704-WNDR4300串口连接信息
find_hif: bootstrap = 0xaf055aWASP BootROM Ver. 1.1Nand Flash initONFI: Control setting = 0xb44find_ ...
- 【IntelliJ IDEA】idea上安装Translation插件后,需要AppKey才能生效的解决方案
使用idea安装的翻译插件translation,但是使用的时候并不友好 无奈,如果想使用翻译软件并且更方便的话,可以如下: 可以选择将translation进行卸载 清除缓存并进行重启 然后再启动之 ...
- linux学习9-进程管理知识
Linux 进程管理 实验环境: 用户名:shiyanlou 密码:AJW3tui5 Linux进程之管理控制 实验介绍 通过本实验我们将掌握一些 Linux 所提供的工具来进行进程的查看与控制,掌握 ...
- 【Codeforces Global Round 1 A】Parity
[链接] 我是链接,点我呀:) [题意] 给你一个k位数b进制的进制转换. 让你求出来转成10进制之后这个数字是奇数还是偶数 [题解] 模拟一下转换的过程,加乘的时候都记得对2取余就好 [代码] im ...
- Lucas小记
组合数学全忘了 记笔记记笔记 做个简单题 代码 from bzoj4403 #include <stdio.h> #define p 1000003 typedef long long l ...
- WPF的TextBox以及PasswordBox显示水印文字
1.TextBox <ControlTemplate x:Key="WaterMarkTextBox" TargetType="{x:Type TextBox}&q ...
- 一个神奇的PHP框架:Phalcon 之初识
前言 公司的APP响应速度比较慢,公司大神决定使用C语言编写的PHP框架Phalcon 代替原来的框架,响应速度有比较大的提升.以前只是听说过,没有深入的了解过.即然工作中有用到,便花点时间了解了下, ...
- mvn 仓库
http://mvnrepository.com/artifact/org.postgresql/postgresql/9.3-1103-jdbc41 ------------------------ ...