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 相关文章推荐
iframe子页面与父页面在同域或不同域下的js通信
May 07 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
Feb 17 Javascript
jQuery动态背景图片效果实现方法
Jul 03 Javascript
浅析Node.js的Stream模块中的Readable对象
Jul 29 Javascript
基于JavaScript实现简单的随机抽奖小程序
Jan 05 Javascript
基于jquery实现无限级树形菜单
Mar 22 Javascript
Angular.Js中过滤器filter与自定义过滤器filter实例详解
May 08 Javascript
React中常见的动画实现的几种方式
Jan 10 Javascript
关于jquery layui弹出层的使用方法
Apr 21 jQuery
vue中的provide/inject的学习使用
May 09 Javascript
vue项目中跳转到外部链接的实例讲解
Sep 20 Javascript
使用layer.msg 时间设置不起作用的解决方法
Sep 12 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
论建造顺序的重要性
2020/03/04 星际争霸
php之对抗Web扫描器的脚本技巧
2008/10/01 PHP
调整优化您的LAMP应用程序的5种简单方法
2011/06/26 PHP
浅析php中常量,变量的作用域和生存周期
2013/08/10 PHP
PHP整合PayPal支付
2015/06/11 PHP
php无序树实现方法
2015/07/28 PHP
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
2013/04/26 Javascript
js每隔5分钟执行一次ajax请求的实现方法
2013/11/27 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
js实现分享到随页面滚动而滑动效果的方法
2015/04/10 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
js评分组件使用详解
2017/06/06 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
自己编程中遇到的Python错误和解决方法汇总整理
2015/06/03 Python
python正则表达式面试题解答
2020/04/28 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
HTML5给汉字加拼音收起展开组件的实现代码
2020/04/08 HTML / CSS
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
查摆问题自我剖析材料
2014/08/18 职场文书
终止或解除劳动合同及劳动关系的证明书
2014/10/06 职场文书
支行行长竞聘报告
2014/11/06 职场文书
2014年车间工作总结
2014/11/21 职场文书
暑期辅导班宣传单
2015/07/14 职场文书
2016年共产党员公开承诺书
2016/03/24 职场文书
vue中this.$http.post()跨域和请求参数丢失的解决
2022/04/08 Vue.js
python+pyhyper实现识别图片中的车牌号思路详解
2022/12/24 Python