javascript数组&省市联动分别用js数组和JSON实现
1.定义数组的三种方式:

js数组支持的下标支持中文。js中的没有二维数组之说,我们仅仅是变量中又可以存储数组
arr['广东省']=['广州','深圳','珠海'];
arr['湖北省']=['武汉','襄樊','赤壁'];
3.关于下拉菜单select动态添加options的一些操作
(1)new Option(text,value);其中text表示的是<option> </option>之间的文字,就是给别人看的,value就是option对象的value属性
(2)动态添加select中的option项,用add(new Option(text,value))
var proSel=document.getElementById("province");
//for in获取的是下标
for(temp in arr){
proSel.add(new Option(temp,temp));
}
(3)动态删除select中的所有的options项,只要将length=0
document.getElementById("ddlResourceType").options.length=0;
但是如果要保留一项就可以这样设置
清空下拉列表框信息
var citySel=document.getElementById("city");
citySel.options.length=1;
(4)动态删除select中的某一项option,用remove(index)
document.getElementById("ddlResourceType").options.remove(index);
4.关于JSON数据
5.实现字符串和JSON格式之间的转换方法
(1)把字符串转换成JSON格式
var obj=JSON.parse(str);
console.info("当前类型为:"+typeof(str));
(2)把JSON格式转换成字符串
var str=JSON.stringfy(obj);
console.info("当前类型为:"+typeof(obj));

6.关于for in
for in 的作用是用来循环下标的,在JSON中常用,得到的是下标temp,要想获取数组的值还要进行arr[temp]
for(temp in arr){
console.info("下标:"+temp+",值为:"+arr[temp]);
}
7.关于获取JSON输出的格式两种格式
var str='{"name":"demo","age":"18"}';
第一种:obj.name和obj.age
第二种:obj['name']和obj['age']
栗子:
var proJSON={"1":"广东省","2":"湖北省"};
var cityJSON={"1":{"020":"广州","0755":"深圳","0710":"珠海"},"2":{"021":"武汉","0752":"十堰","0712":"襄樊"}};
var province=document.getElementById("province");
for(temp in proJSON){
province.add(new Option(proJSON[temp],temp));
}
8.两个案例
(1)基于数组的级联列表
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>基于数组级联列表</title>
<script>
var arr=new Array();
//js数组支持的下标支持中文。js中的没有二维数组直说,我们仅仅是变量中又可以存储数组
arr['广东省']=['广州','深圳','珠海'];
arr['湖北省']=['武汉','襄樊','赤壁'];
window.onload=function(){
//向省会赋值下拉列表框
var proSel=document.getElementById("province");
//for in获取的是下标
for(temp in arr){
proSel.add(new Option(temp,temp));
console.info("下标:"+temp+",值为:"+arr[temp]);
}
}
function setCity(){
//清空下拉列表框信息
var citySel=document.getElementById("city");
citySel.options.length=1;
//获取选中的省会信息,value值就是底下option的value值,即为广东省,湖北省
var pro=document.getElementById("province").value;
//如果选择的是"提示信息"就是"选择省会",则不赋值
if(pro=="")
return;
for(var i=0;i<arr[pro].length;i++){
citySel.add(new Option(arr[pro][i],arr[pro][i]));
}
} </script>
</head>
<body>
<select id="province" onchange="setCity()">
<option value="">--选择省会--</option>
</select>
<select id="city">
<option value="">--选择城市--</option>
</select>
</body>
</html>
(2)基于JSON的级联列表
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>基于json级联列表</title>
<script>
//JSON主要用于数据交换,其实JSON就是有格式的字符串
var str='{"name":"demo","age":"18"}';
console.info("当前类型为:"+typeof(str));
//把字符串转换成JSON格式
var obj=JSON.parse(str);
console.info("当前类型为:"+typeof(obj));
//JSON输出访问的两种格式
console.info(obj.name+","+obj.age+"||"+obj['name']+","+obj['age']); //采用JSON格式来存储相应的数据和编码
//proJSON和cityJSON是通过"1","2"联系起来的
var proJSON={"1":"广东省","2":"湖北省"};
var cityJSON={"1":{"020":"广州","0755":"深圳","0710":"珠海"},"2":{"021":"武汉","0752":"十堰","0712":"襄樊"}};
window.onload=function(){
var province=document.getElementById("province");
for(temp in proJSON){
province.add(new Option(proJSON[temp],temp));
}
}
function setCity(){
//只要触发了此事件,二级菜单必须还原
var city=document.getElementById('city');
city.options.length=1;
//获取被选中的省会的值value值就是1,2
var val=document.getElementById("province").value;
console.info("cityJSON:"+cityJSON[val]);
//如果没有选择任何省会信息,则直接返回
if(!cityJSON[val])
return;
//通过选中的值,获取二级菜单列表
var sonJSON=cityJSON[val];
for(temp in sonJSON){
city.add(new Option(sonJSON[temp],temp));
} }
</script>
</head>
<body>
<select id="province" onchange="setCity()">
<option value="">--选择省会--</option>
</select>
<select id="city">
<option value="">--选择城市--</option>
</select>
</body>
</html>
javascript数组&省市联动分别用js数组和JSON实现的更多相关文章
- JavaScript数组常用方法解析和深层次js数组扁平化
前言 数组作为在开发中常用的集合,除了for循环遍历以外,还有很多内置对象的方法,包括map,以及数组筛选元素filter等. 注:文章结尾处附深层次数组扁平化方法操作. 作为引用数据类型的一种,在处 ...
- 省市联动 纯html+js
在js里面声明所有数据,并根据html的select事件触发js实现填充对应的数据到下拉框. 代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...
- JavaScript实现省市联动
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- js数组的操作及数组与字符串的相互转化
数组与字符串的相互转化 <script type="text/javascript">var obj="new1abcdefg".replace(/ ...
- .net中后台c#数组与前台js数组交互
第一步:定义cs数组 cs文件里后台程序中要有数组,这个数组要定义成公共的数组. public string[] lat = null; public string[] lng = null; ...
- js数组学习整理
原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...
- php数组转换js数组操作及json_encode应用
对于php,个人感觉能够熟练操作数组和字符串,基本上已经是入门了,php本身有很多操作数组和字符串的函数,今天在做一个功能时,需要用Js动态的创建门店信息,这些信息是要从后台添加的,想来想去,通过ph ...
- [jQ/PHP]再谈使用JS数组储值的运用(提交PHP处理)
--------------------------------------------------------------------------------------------------- ...
- 通过Javascript数组设计一个省市联动菜单
通过Javascript数组设计一个省市联动菜单 使用Option内置类来完成下拉选项的创建 2.使用定时器实现一个时钟程序 3.使用PHP+JSON完成语音验证码 网址:http://yuyin.b ...
随机推荐
- $("#Upfile").MultiFile();
Jquery的multifile 1.多文件上传: 2.如上几个验证不重复,和限制上传数量的验证显示的是英文,改成中文文本时,如果不用国标解码,到时候提示框会出现乱码现象.所以一般需要中文显示的时候, ...
- Linux读取NTFS类型数据盘
Windows的文件系统通常使用NTFS或者FAT32格式,而Linux的文件系统格式通常是EXT系列,请参考下面方法: 1) 在Linux系统上使用以下命令安装ntfsprogs软件使得Linux能 ...
- react+webpack 引入字体图标
在使用react+webpack 构建项目过程中免不了要用到字体图标,在引入过程中报错,不能识别字体图标文件中的@符,报错 Uncaught Error: Module parse failed: U ...
- java日期时间Date类
java.util包提供了Date类来封装当前的日期和时间. Date类提供两个构造函数来实例化Date对象. 第一个构造函数使用当前日期和时间来初始化对象. Date( ) 第二个构造函数接收一个参 ...
- QR分解与最小二乘(转载自AndyJee)
转载网址:http://www.cnblogs.com/AndyJee/p/3846455.html 主要内容: 1.QR分解定义 2.QR分解求法 3.QR分解与最小二乘 4.Matlab实现 一. ...
- CRUD全栈式编程概述
业务场景 CRUD,从数据驱动的角度几乎所有的的业务都是在做这样的事情. 几乎所有的操作都是在做对表的增删改查. 假设我们将数据库数据规个类: 分为基础/配置数据和业务/增长数据,或者说静态数据 ...
- python2.7 加密模块 解决各种坑
1 Python27 安装crypto Windows安装 在Windows上安装的时候直接 pip install pycrypto会报错,参考:http://blog.csdn.net/teloy ...
- 第3章 如何用DAP仿真器下载程序—零死角玩转STM32-F429系列
第3章 如何用DAP仿真器下载程序 集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ...
- Python测量时间,用time.time还是time.clock
在计算机领域有多种时间.第一种称作CPU时间或执行时间,用于测量在执行一个程序时CPU所花费的时间.第二种称作挂钟时间,测量执行一个程序时的总时间.挂钟时间也被称作流逝时间或运行时间.与CPU时间相比 ...
- AMD、CMD、CommonJs和ES6对比
一.AMD(异步模块定义) AMD(异步模块定义)是RequireJS在推广过程中对模块定义的规范化产出.AMD是一个概念,RequireJs是对这个概念的实现.比如javascript语言是对ECM ...