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如何获取数组最大值和最小值
Nov 18 Javascript
详解JavaScript基本类型和引用类型
Dec 09 Javascript
jQuery焦点图轮播效果实现方法
Dec 19 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
Dec 31 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
Mar 08 Javascript
JavaScript实现三级联动菜单实例代码
Jun 26 Javascript
AngularJs ng-change事件/指令的用法小结
Nov 01 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
Sep 17 Javascript
js回文数的4种判断方法示例
Jun 04 Javascript
Layui 数据表格批量删除和多条件搜索的实例
Sep 04 Javascript
js实现3D照片墙效果
Oct 28 Javascript
flexible.js实现移动端rem适配方案
Apr 07 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的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
JQuery上传插件Uploadify使用详解及错误处理
2010/04/27 Javascript
跨浏览器的事件对象介绍
2012/06/27 Javascript
jQuery晃动层特效实现方法
2015/03/09 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
jQuery实现Tab选项卡切换效果简单演示
2015/11/23 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
JavaScript脚本语言是什么_动力节点Java学院整理
2017/06/26 Javascript
jQuery实现上传图片前预览效果功能
2017/08/03 jQuery
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
[15:56]Heroes18_暗影萨满(完美)
2014/10/31 DOTA
Python计算三维矢量幅度的方法
2015/06/15 Python
Python环境搭建之OpenCV的步骤方法
2017/10/20 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
关于python中plt.hist参数的使用详解
2019/11/28 Python
Django更新models数据库结构步骤
2020/04/01 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
Spotahome意大利:公寓和房间出租
2020/02/21 全球购物
《石榴》教学反思
2014/03/02 职场文书
个人函授自我鉴定
2014/03/25 职场文书
三严三实对照检查材料
2014/08/25 职场文书
新年晚会开场白
2015/05/29 职场文书