JavaScript二维数组实现的省市联动菜单


Posted in Javascript onMay 08, 2014
<!DOCTYPE html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Insert title here</title> 
<script type="text/javascript"> 
//初始化一个二维数组存储城市列表项 
var cities=[ 
["安庆","合肥","桐城"], 
["石家庄","保定","唐山"], 
["郑州","洛阳","开封"] 
]; 
//选中某个省份时候,调用添加城市的方法 
function provinceChanged(sel){ 
//alert("select的长度"+sel.options.length); 
//sel其实就是select对象 
//遍历options集合,查找选中的选项 
for(var x=0;x<sel.options.length;x++) 
{ 
var opt=sel.options[x]; 
if(opt.selected) 
{ 
//给被选择的城市的select 添加option 
addCityToSelect(x) 
} 
} 
} 
//添加选中省份下的城市项到city的select中 
function addCityToSelect(x){ 
//从二维数组中找出对应的城市 
var city=cities[x-1]; 
var citySelect=document.getElementById("select_city"); 
/*==================删除节点中已经存在的元素=============== 
在第二次或第n次调用方法的时候城市select对象中已经添加了之前添加的节点,所以有清空。 
思路1:select对象的removeChild(),所以通过循环遍历可以删除字节点。 
思路2:直接设置select.options.length=1可以实现相同效果。 
*/ 
//设置城市的select对象下的options长度为1 
citySelect.options.length=1; 
//设置options集合的长度,删除 
//citySelect.options.length=1; 
for(var x=0;x<city.length;x++) 
{ 
//创建元素节点对象 
var optionName=document.createElement("option"); 
//给option设置显示内容 
optionName.innerHTML=city[x]; 
//将创建的option添加到select 
citySelect.appendChild(optionName); 
/* 
在这个地方将某一个省份下面的所有城市添加到citySelect对象下面以后 
当第二次选择第二个省份的时候,第二个省份的下面的所有城市有会被追加到 
citySelect节点下面。这样的效果就错了。所以要求在每次添加之前,要 
对citySelect节点下面的内容进行清空。接着看: 
==================删除节点中已经存在的元素=============== 
*/ 
} 
} 
</script> 
</head> 
<body> 
<select onchange="provinceChanged(this);"> 
<!--this的含义:是指select对象调用provinceChanged(this),并且在此方法中 
把对象本身作为参数传递,以便对其进行操作。 --> 
<option>请选择省份</option> 
<option>安徽</option> 
<option>河北</option> 
<option>河南</option> 
</select> 
<select id="select_city"> 
<option>请选择城市</option> 
</select> 
</body> 
</html>
Javascript 相关文章推荐
基于jquery的代码显示区域自动拉长效果
Dec 07 Javascript
jQuery输入城市查看地图使用介绍
May 08 Javascript
Javascript中克隆一个数组的实现代码
Dec 06 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
Sep 17 Javascript
jQuery中closest()函数用法实例
Jan 07 Javascript
JS返回iframe中frameBorder属性值的方法
Apr 01 Javascript
JS正则表达式修饰符global(/g)用法分析
Dec 27 Javascript
JS简单实现自定义右键菜单实例
May 31 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
Aug 29 Javascript
详解Vue-cli代理解决跨域问题
Sep 27 Javascript
基于vue-video-player自定义播放器的方法
Mar 21 Javascript
jquery+ajax实现异步上传文件显示进度条
Aug 17 jQuery
javascript中setTimeout的问题解决方法
May 08 #Javascript
在JavaScript中使用timer示例
May 08 #Javascript
JavaScript中读取和保存文件实例
May 08 #Javascript
ExtJS中设置下拉列表框不可编辑的方法
May 07 #Javascript
jquery 显示*天*时*分*秒实现时间计时器
May 07 #Javascript
解决jQuery动态获取手机屏幕高和宽的问题
May 07 #Javascript
addEventListener 的用法示例介绍
May 07 #Javascript
You might like
多php服务器实现多session并发运行
2006/10/09 PHP
PHP 实例化类的一点摘记
2008/03/23 PHP
php adodb操作mysql数据库
2009/03/19 PHP
深入php处理整数函数的详解
2013/06/09 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
2015/12/22 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
2016/08/11 PHP
php无限级分类实现方法分析
2016/10/19 PHP
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
封装获取dom元素的简单实例
2016/07/08 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
vue 项目常用加载器及配置详解
2018/01/22 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
2018/01/23 Javascript
深入理解node.js http模块
2018/01/24 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
[49:13]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第一局
2016/02/27 DOTA
win7安装python生成随机数代码分享
2013/12/27 Python
pygame实现简易飞机大战
2018/09/11 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
python如何删除文件、目录
2020/06/23 Python
python文件排序的方法总结
2020/09/13 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
幼儿园运动会加油词
2014/02/14 职场文书
高考备战决心书
2014/03/11 职场文书
小班上学期评语
2014/05/05 职场文书
应届大专生自荐书
2014/06/16 职场文书
初中班主任工作总结2015
2015/05/13 职场文书
Python面向对象之内置函数相关知识总结
2021/06/24 Python
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL
Python列表的索引与切片
2022/04/07 Python