需要javascript动态级联选择选项的简洁实现
Need concise implementaion of javascript dynamic cascaded select options
以下程序可以在Windows 7的Chrome, Firefox, Safari上运行,但不能在IE上运行。如何改进并保持简洁?
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>选择地区</title>
</head>
<body>
<form id="area">
<select id="selectProvince" onchange="setCities()"></select>
<select id="selectCity"></select>
</form>
</body>
<script>
var province_cities_map = {
北京: ['东城','西城'],
上海: ['黄浦','卢湾'],
};
function setProvinces() {
provinces = Object.keys(province_cities_map);
selectProvince.length = 0;
for (i = 0; i < provinces.length; i++) selectProvince.options[i] = new Option(provinces[i]);
setCities();
}
function setCities() {
cities = province_cities_map[selectProvince.value];
selectCity.length = 0;
for (j = 0; j < cities.length; j++) selectCity.options[j] = new Option(cities[j]);
}
setProvinces();
</script>
</html>
这里有几个问题。
一个是对象字面量后面的逗号。把它拿出来:
var province_cities_map = {
北京: ['东城','西城'],
上海: ['黄浦','卢湾']
};
此外,在较旧的浏览器中不会有Object.keys()
可用,并且不应该依赖对象中元素的顺序。如果你关心数据的顺序,你应该把数据放在一个数组中。
相关文章:
- 如何使用动画实现纸张推车
- 客户端服务器REST API captcha实现
- 如何实现此布局
- Meteor忘记了密码的实现
- 使用Native Sockets在Android中实现WebSockets
- 在样板文件中实现Ajax
- instanceof是如何在JavaScript中实现的
- 如何正确实现Jquery多选小部件
- 实现一个建立在google.com之上的自定义搜索引擎
- 多个组件是如何实现的
- window.location使用jquery mobile实现chrome跳转
- 如何在OpenERP中实现网络摄像头
- Node.js使用Series函数(模式?)实现流控制时出现意外结果
- javascript加密实现,包括可信否认
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 如何让程序员在javascript中实现正确的回调
- 如何使用自定义辅助对象(handler)实现嵌套的每个循环
- AngularJS智能表全局配置实现
- 有没有一种更简洁的方法可以使用 Angular 指令实现页面位置感知
- 需要javascript动态级联选择选项的简洁实现