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实现全部删或清空所选的操作
May 27 Javascript
jQuery实现tag便签去重效果的方法
Jan 20 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
Jun 23 Javascript
前端程序员必须知道的高性能Javascript知识
Aug 24 Javascript
Js获取当前日期时间及格式化代码
Sep 17 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
Nov 09 Javascript
vue.js入门(3)——详解组件通信
Dec 02 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
Apr 26 Javascript
浅谈React中组件间抽象
Jan 27 Javascript
iview table高度动态设置方法
Mar 14 Javascript
浅谈Angular单元测试总结
Mar 22 Javascript
js绘制一条直线并旋转45度
Aug 21 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
PHP关联链接常用代码
2012/11/05 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
js function使用心得
2010/05/10 Javascript
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
js获取视频时长代码
2014/04/10 Javascript
jQuery表格插件datatables用法总结
2014/09/05 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
jQuery图片轮播实现并封装(一)
2016/12/03 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
Python使用代理抓取网站图片(多线程)
2014/03/14 Python
发布你的Python模块详解
2016/09/15 Python
Python中is与==判断的区别
2017/03/28 Python
python绘制多个子图的实例
2019/07/07 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
python实现串口通信的示例代码
2020/02/10 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
python线程优先级队列知识点总结
2021/02/28 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
市场营销管理毕业生自荐信
2014/03/03 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
思品教学工作总结
2015/08/10 职场文书
《我是什么》教学反思
2016/02/16 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python