关于省市联动代码的思考

在学习省市联动示例的时候,首先在二维数组上栽了跟头,现将数组相关知识记录一下:

一维数组声明的两种方式:

第一种:

var mycars=new Array()
mycars[0]="Saab"
mycars[1]="Volvo"
mycars[2]="BMW"

或者:

var mycars=new Array(3)
mycars[0]="Saab"
mycars[1]="Volvo"
mycars[2]="BMW"

第二种:

var mycars=new Array("Saab","Volvo","BMW")

二维数组声明的方式:

var cities = new Array(4);
cities[0] = new Array("东城区","西城区","宣武区","朝阳区");
cities[1] = new Array("黄浦区","徐汇区","长宁区","静安区");
cities[2] = new Array("济南市","青岛市","淄博市","枣庄市");
cities[3] = new Array("石家庄市","唐山市","秦皇岛市","邯郸市");

最后有一个疑问,思考了很久也没有获得答案:

示例中必须遍历省份,然后与所传值进行比较,相同的话再进行城市的遍历,即需要双重遍历,我发现不需要遍历省份也可以完成

示例代码:

<script>
	//1.创建一个二维数组用于存储省份和城市
	var cities = new Array(3);
	cities[0] = new Array("武汉市","黄冈市","襄阳市","荆州市");
	cities[1] = new Array("长沙市","郴州市","株洲市","岳阳市");
	cities[2] = new Array("石家庄市","邯郸市","廊坊市","保定市");
	cities[3] = new Array("郑州市","洛阳市","开封市","安阳市");
	
	function changeCity(val){
		
		//7.获取第二个下拉列表
		var cityEle = document.getElementById("city");
		
		//9.清空第二个下拉列表的option内容
		cityEle.options.length=0;
		
		//2.遍历二维数组中的省份
		for(var i=0;i<cities.length;i++){
			//注意,比较的是角标
			if(val==i){
				//3.遍历用户选择的省份下的城市
				for(var j=0;j<cities[i].length;j++){
					//alert(cities[i][j]);
					//4.创建城市的文本节点
					var textNode = document.createTextNode(cities[i][j]);
					//5.创建option元素节点
					var opEle = document.createElement("option");
					//6.将城市的文本节点添加到option元素节点
					opEle.appendChild(textNode);
					//8.将option元素节点添加到第二个下拉列表中去
					cityEle.appendChild(opEle);
				}
			}
		}
	}
</script>

我自己的代码:

<script type="text/javascript">
	function selectCity(index){
		var cities = new Array(4);
		cities[0] = new Array("东城区","西城区","宣武区","朝阳区");
		cities[1] = new Array("黄浦区","徐汇区","长宁区","静安区");
		cities[2] = new Array("济南市","青岛市","淄博市","枣庄市");
		cities[3] = new Array("石家庄市","唐山市","秦皇岛市","邯郸市");
			
		var cityEle = document.getElementById("cityid");
			
		cityEle.options.length = 0;
			
		for (var i = 0;i < cities[index].length;i++) {
			var optionNode = document.createElement("option");
			var textNode = document.createTextNode(cities[index][i]);
			optionNode.appendChild(textNode);
			cityEle.appendChild(optionNode);				
		}				
	}
</script>
以后学明白了再来看看怎么回事吧


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
最近的项目要用到全国省市数据,于是到网上找了一些。可是下载下来看一下,格式都不是我想要的。基本上都是分表的,省、分开保存,有的还有地区表。而自己想要一个表的,或者是一个xml,或者是一个Json。 搜索过程中,找到了国家统计局的省市数据,看页面简单,正好最近在弄数据采集。以其下载别人的,还要扣金币、不如自己采集吧,一方面练习,另一方面也上传供下载,赚些金币,嘿嘿。 好了,牢骚说完了,说正事。 数据来源与国家统计局网站,网址是:http://www.stats.gov.cn/tjbz/xzqhdm/t20090626_402568086.htm (这些数据还包含了行政区域代码,就是身份证号码前6位,可以用来查询身份证归属地^_^) 这个页面数据是有规律的,每个省份包含在 标签内,而城和地区则用分隔 我是的采集正则表达式是:(|)(\d{6})(\s*)([^<]*) 这里有几个地方需要注意,其实是他们发布数据时的一点点不规则的地方: 1.宁夏回族自治区, 开始时多了个 。上面说了省份是包含在 标签内,所以这个情况如果想只找出省份的话,用 是匹配不到的 2.有些地方的空格是用  ,有的地方是全角空格,有的地方是用半角空格,如果有用到空格的地方就注意一下咯,我在保存 xml 和 Json 时,就用到了空格,所以我都做替换了 要注意的就这两点而已,好了,我会把这段文字和 xml、Json 一起打包上传。 压缩包里面是全部写好的,可以直接用。 评论返还全部分数哦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值