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 相关文章推荐
JS 学习笔记 防止发生命名冲突
Jul 30 Javascript
JS TextArea字符串长度限制代码集合
Oct 31 Javascript
尝试在让script的type属性等于text/html
Jan 15 Javascript
JS动态创建DOM元素的方法
Jun 09 Javascript
js实现select下拉框菜单
Dec 08 Javascript
JavaScript实现搜索框的自动完成功能(一)
Feb 25 Javascript
JS基于面向对象实现的多个倒计时器功能示例
Feb 28 Javascript
JS随机排序数组实现方法分析
Oct 11 Javascript
Vue官网todoMVC示例代码
Jan 29 Javascript
iview table render集成switch开关的实例
Mar 14 Javascript
详解async/await 异步应用的常用场景
May 13 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
Aug 25 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+javascript模拟Matrix画面
2006/10/09 PHP
推荐个功能齐全的发送PHP邮件类
2007/01/03 PHP
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
php通过COM类调用组件的实现代码
2012/01/11 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
PHP实现通过get方式识别用户发送邮件的方法
2015/07/16 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
php打乱数组二维数组多维数组的简单实例
2016/06/17 PHP
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
jQuery实现链接的title快速出现的方法
2017/02/20 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
如何用Node写页面爬虫的工具集
2018/10/26 Javascript
图解NodeJS实现登录注册功能
2019/09/16 NodeJs
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
three.js中多线程的使用及性能测试详解
2021/01/07 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
[02:39]我与DAC之Newbee.Moogy:从论坛到TI
2018/03/26 DOTA
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
机器学习python实战之决策树
2017/11/01 Python
Python实现的计数排序算法示例
2017/11/29 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
python实现简易内存监控
2018/06/21 Python
python 并发编程 阻塞IO模型原理解析
2019/08/20 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
董事长秘书职责
2014/01/31 职场文书
爬山的活动方案
2014/08/16 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL