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 相关文章推荐
网站被黑的假象--ARP欺骗之页面中加入一段js
May 16 Javascript
JS获取并操作iframe中元素的方法
Mar 21 Javascript
在JavaScript中判断整型的N种方法示例介绍
Jun 18 Javascript
javascript实现一个数值加法函数
Jun 26 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
Aug 06 Javascript
ES6中Generator与异步操作实例分析
Mar 31 Javascript
Vue实现路由跳转和嵌套
Jun 20 Javascript
BootStrap入门学习第一篇
Aug 28 Javascript
Vue+Flask实现简单的登录验证跳转的示例代码
Jan 13 Javascript
vue返回上一页面时回到原先滚动的位置的方法
Dec 20 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
May 23 Javascript
three.js 实现露珠滴落动画效果的示例代码
Mar 01 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
Trying to clone an uncloneable object of class Imagic的解决方法
2012/01/11 PHP
php颜色转换函数hex-rgb(将十六进制格式转成十进制格式)
2013/09/23 PHP
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
Javascript中Array用法实例分析
2015/06/13 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
Jquery 整理元素选取、常用方法一览表
2016/11/26 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
axios 封装上传文件的请求方法
2018/09/26 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
2020/05/12 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
python每次处理固定个数的字符的方法总结
2013/01/29 Python
Python实现保证只能运行一个脚本实例
2015/06/24 Python
详解Python字符串对象的实现
2015/12/24 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
PyQt5实现暗黑风格的计时器
2019/07/29 Python
python命名空间(namespace)简单介绍
2019/08/10 Python
Python with语句和过程抽取思想
2019/12/23 Python
NumPy排序的实现
2020/01/21 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
写出二分查找算法的两种实现
2013/05/13 面试题
运动会通讯稿300字
2014/02/02 职场文书
大学中国梦演讲稿
2014/04/23 职场文书
实习计划书范文
2015/01/16 职场文书
团代会闭幕词
2015/01/28 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
教师读书活动心得体会
2016/01/14 职场文书
《颐和园》教学反思
2016/02/19 职场文书