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 相关文章推荐
自动检查并替换文本框内的字符
Jun 30 Javascript
javascript delete 使用示例代码
Mar 29 Javascript
jquery重复提交请求的原因浅析
May 23 Javascript
jQuery中ajax的load()方法用法实例
Dec 26 Javascript
javascript实现确定和取消提示框效果
Jul 10 Javascript
jQuery图片渐变特效的简单实现
Jun 25 Javascript
d3.js入门教程之数据绑定详解
Apr 28 Javascript
ES6扩展运算符的用途实例详解
Aug 20 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
Nov 13 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
Mar 29 Javascript
浅谈发布订阅模式与观察者模式
Apr 09 Javascript
Layui Table js 模拟选中checkbox的例子
Sep 03 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
德劲1103二次变频版的打磨
2021/03/02 无线电
PHP自定义多进制的方法
2016/11/03 PHP
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
js实现在文本框光标处添加字符的方法介绍
2012/11/24 Javascript
JavaScript生成GUID的多种算法小结
2013/08/18 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
Jquery easyUI 更新行示例
2014/03/06 Javascript
Jquery实现遮罩层的方法
2015/06/08 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
[08:44]和酒神一起战斗 DOTA2教你做大人
2014/03/27 DOTA
详细解读Python中的__init__()方法
2015/05/02 Python
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
python 多线程对post请求服务器测试并发的方法
2019/06/13 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
中国制造网:Made-in-China.com
2019/10/25 全球购物
简述synchronized和java.util.concurrent.locks.Lock的异同
2014/12/08 面试题
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
应届毕业生个人求职信范文
2014/01/29 职场文书
土地转让协议书
2014/04/15 职场文书
体现团队精神的口号
2014/06/06 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
小学教师见习总结
2015/06/23 职场文书
高一地理教学工作总结
2015/08/12 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
Python使用scapy模块发包收包
2021/05/07 Python
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
SpringBoot详解执行过程
2022/07/15 Java/Android