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 相关文章推荐
window.location.hash 属性使用说明
Mar 20 Javascript
JS高级笔记
Jul 13 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
Nov 24 Javascript
jquery如何判断某元素是否具备指定的样式
Nov 05 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
Mar 03 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
May 11 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
Oct 01 Javascript
三个js循环的关键字示例(for与while)
Feb 16 Javascript
最好用的Bootstrap fileinput.js文件上传组件
Dec 12 Javascript
AngularJS入门示例之Hello World详解
Jan 04 Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
Aug 14 Javascript
vue实现Toast组件轻提示
Apr 10 Vue.js
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
实用函数7
2007/11/08 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
PHP实现Javascript中的escape及unescape函数代码分享
2015/02/10 PHP
php实现两个数组相加的方法
2015/02/17 PHP
PHP格式化MYSQL返回float类型的方法
2016/03/30 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
js 多种变量定义(对象直接量,数组直接量和函数直接量)
2010/05/24 Javascript
javascript 函数调用的对象和方法
2010/07/01 Javascript
JS获取时间的方法
2015/01/21 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
2016/11/09 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
使用cookie绕过验证码登录的实现代码
2017/10/12 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
微信小程序实现批量倒计时功能
2020/11/01 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
python GUI库图形界面开发之PyQt5计数器控件QSpinBox详细使用方法与实例
2020/02/28 Python
详解python变量与数据类型
2020/08/25 Python
EntityManager都有哪些方法
2013/11/01 面试题
WSDL的操作类型主要有几种
2013/07/19 面试题
优秀信贷员先进事迹
2014/01/31 职场文书
年终考核实施方案
2014/05/26 职场文书
小组名称和口号
2014/06/09 职场文书
迎国庆横幅标语
2014/10/08 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
高中家长意见怎么写
2015/06/03 职场文书
微信小程序实现聊天室功能
2021/06/14 Javascript
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android