用JS实现下拉选单的联动

12 篇文章 0 订阅
11 篇文章 0 订阅

需求:用JS实现一个下拉选单,要求在选中“地区”选单中相应的地区时,自动在“国家”选单中 出现相应的国家。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>联动菜单</title>
	</head>
	<body>
		<p>地区:
			<select id="area" οnchange="change();">
				<option value="">请选择</option>
				<option value="1">亚洲</option>
				<option value="2">欧洲</option>
				<option value="3">非洲</option>
			</select>
		</p>
		<p>国家:
			<select id="country">
				<option>请选择</option>
			</select>
		</p>
	</body>
	<script type="text/javascript" src="select.js" ></script>
</html>

select.js

//假设接收到服务器传来的参数
var data = [
	["中国","朝鲜","日本"],
	["挪威","冰岛","葡萄牙"],
	["南非","津巴布韦","乌干达"]
]

function change(){
	var area = document.getElementById("area");
	var countrys = document.getElementById("country");
	var index = area.value;					
	var selects = data[index-1];			//通过选中下拉的选单value值获取数据
	
	var oldOptions = countrys.children;		//用children,数组内不会有多余属性(换行符)
	var length = oldOptions.length;			//!!注意,提前记录length原因:
											//如果在遍历删除过程中记录length,则length值会改变,删除会出错。
	for(var i=0;i<length;i++){				//删除原先选项的过程,若不删除,选项会一直堆积。
		countrys.removeChild(oldOptions[0]);//一直第一个元素,因为清除第一个以后,后面的元素会前移。如果按正常的i遍历,会出错!
	}
	
	if(index==0) return;					//如果选中的是"请选择",就不再添加数据,避免报错(因为脚标是-1)
	
	for(var i=0;i<selects.length;i++){		//增加选项过程
		var option = document.createElement("option");
		option.innerHTML = selects[i];
		country.appendChild(option);
	}
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpreadJS提供了多种方式来实现下拉选择联动,以下是其一种实现方式: 1. 在第一个下拉列表添加数据源,例如: ```javascript var dataSource1 = [ { value: "option1", text: "选项1" }, { value: "option2", text: "选项2" }, { value: "option3", text: "选项3" } ]; spread.addDropDownList(0, 0, dataSource1); ``` 2. 在第二个下拉列表添加数据源,但不显示出来,例如: ```javascript var dataSource2 = [ { value: "option1", text: "选项1" }, { value: "option2", text: "选项2" }, { value: "option3", text: "选项3" } ]; var dropDownList2 = spread.addDropDownList(0, 1, dataSource2); dropDownList2.visible(false); ``` 3. 在第一个下拉列表的change事件,根据选择的值来更新第二个下拉列表的数据源和显示状态,例如: ```javascript spread.bind(GC.Spread.Sheets.Events.SelectionChanging, function(sender, args) { if (args.sheetArea !== GC.Spread.Sheets.SheetArea.viewport) { return; } var sheet = sender.getActiveSheet(); var row = args.row; var col = args.col; var value = sheet.getValue(row, col); if (col === 0) { // 第一个下拉列表的change事件 if (value === "option1") { var dataSource3 = [ { value: "suboption1", text: "子选项1" }, { value: "suboption2", text: "子选项2" } ]; dropDownList2.setDataSource(dataSource3); dropDownList2.visible(true); } else if (value === "option2") { var dataSource4 = [ { value: "suboption3", text: "子选项3" }, { value: "suboption4", text: "子选项4" } ]; dropDownList2.setDataSource(dataSource4); dropDownList2.visible(true); } else { dropDownList2.visible(false); } } }); ``` 这样,当第一个下拉列表的值改变时,就会根据不同的选择来更新第二个下拉列表的数据源和显示状态,实现下拉选择联动

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值