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 相关文章推荐
javascript学习笔记(十九) 节点的操作实现代码
Jun 20 Javascript
js实现下拉框选择要显示图片的方法
Feb 16 Javascript
JavaScript中停止执行setInterval和setTimeout事件的方法
May 14 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
Nov 21 Javascript
实现隔行换色效果的两种方式【实用】
Nov 27 Javascript
微信小程序 二维码canvas绘制实例详解
Jan 06 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
Jan 21 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
Sep 26 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
Jan 08 Javascript
VUE 配置vue-devtools调试工具及安装方法
Sep 30 Javascript
图片文字识别(OCR)插件Ocrad.js教程
Nov 26 Javascript
Vue调用后端java接口的实例代码
Oct 28 Javascript
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
终于听上了直流胆调频
2021/03/02 无线电
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
15 个 JavaScript Web UI 库
2010/05/19 Javascript
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
基于JS实现textarea中获取动态剩余字数的方法
2016/05/25 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
JavaScript事件委托原理与用法实例分析
2018/06/07 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
layui监听单元格编辑前后交互的例子
2019/09/16 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
python中dir()与__dict__属性的区别浅析
2018/12/10 Python
HTML5通过navigator.mediaDevices.getUserMedia调用手机摄像头问题
2020/04/27 HTML / CSS
日本小田急百货官网:Odakyu
2018/07/19 全球购物
实习自我鉴定范文
2013/10/30 职场文书
关于赌博的检讨书
2014/01/08 职场文书
书法比赛获奖感言
2014/02/10 职场文书
2014年企业团支部工作总结
2014/12/10 职场文书
新闻稿怎么写
2015/07/18 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android
TV动画《间谍过家家》公开PV
2022/03/20 日漫
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server