利用js写一个联动复选框

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<!--省份-->
		<select id="sheng">
			<option value="省份">省份</option>
			<option value="河南省">河南省</option>
			<option value="浙江省">浙江省</option>
		</select>
		<!--城市-->
		<select id="city">
			<option value="市区">市区</option>
		</select>
		
	</body>
</html>

<script type="text/javascript">
	//1.获取标签
	//2.定义变量
	var arr1 = ["郑州市", "洛阳市", "驻马店市", "焦作市", "南阳市", "新乡市", "开封市", "漯河市", "濮阳市", "安阳市"];
	var arr2 = ["杭州市", "金华市", "义乌市", "温州市", "绍兴市", "宁波市", "嘉兴市"];
	
	//3.select的事件 onchange 也就是只有值变化 才会执行!
	sheng.onchange = function(){
		//方式1:简单暴力又好用
//		city.innerHTML = "";//清空子标签内容
		//方式2: city标签中的子标签是数组容器
//		for(var i = 0; i < city.children.length; i++){
//			city.children[i].remove();
//			i--;
//		}
		// [1, 2, 3, 4, 5, 6]
		//方式3:
		var l = city.children.length;
		for(var i = 0; i < l; i++){
			city.children[0].remove();
		}
		//问题在于  i++一直在自增; 
		//city.children.length 这个值一直在减小!!
		
		
		
		// firstElementChild 要保证,其不能为空!!
		//注意   程序不允许  undefined.语法  也不允许null.语法
		//只有真实有效的对象可以点语法操作!
		
		//定义一数组  来接收应该显示的市区数组
		var tempArray = ["市区"];
		if(this.value == "河南省"){
			tempArray = arr1;
		}
		
		if(this.value == "浙江省"){
		  tempArray = arr2;
		}
		//--------------------------------
		for(var i = 0; i < tempArray.length; i++){
			var option1 = document.createElement("option");
			option1.innerHTML = tempArray[i];
			option1.value = tempArray[i];
			city.appendChild(option1);
		}
		console.log(tempArray);
	}
</script>

运行结果:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Uniapp多级联动复选框可以通过使用uni-form组件配合v-for指令和computed计算属性实现。以下是一个简单的示例代码: ```html <template> <uni-form> <uni-form-item label="选择地区"> <uni-checkbox-group v-model="selected"> <uni-checkbox v-for="(province, pIndex) in provinces" :key="pIndex" :label="province.name"> {{ province.name }} </uni-checkbox> <uni-checkbox v-for="(city, cIndex) in cities" :key="cIndex" :label="city.name" :disabled="!selected.includes(city.parent)"> {{ city.name }} </uni-checkbox> <uni-checkbox v-for="(district, dIndex) in districts" :key="dIndex" :label="district.name" :disabled="!selected.includes(district.parent)"> {{ district.name }} </uni-checkbox> </uni-checkbox-group> </uni-form-item> </uni-form> </template> <script> export default { data() { return { selected: [], provinces: [ { name: '北京', code: '110000' }, { name: '上海', code: '310000' }, { name: '广东', code: '440000' }, ], cities: [ { parent: '北京', name: '北京市', code: '110100' }, { parent: '上海', name: '上海市', code: '310100' }, { parent: '广东', name: '广州市', code: '440100' }, { parent: '广东', name: '深圳市', code: '440300' }, { parent: '广东', name: '珠海市', code: '440400' }, ], districts: [ { parent: '北京市', name: '东城区', code: '110101' }, { parent: '北京市', name: '西城区', code: '110102' }, { parent: '广州市', name: '越秀区', code: '440104' }, { parent: '广州市', name: '荔湾区', code: '440103' }, { parent: '深圳市', name: '福田区', code: '440304' }, { parent: '珠海市', name: '香洲区', code: '440402' }, ], }; }, computed: { filteredCities() { const filteredCities = this.cities.filter(city => this.selected.includes(city.parent)); return filteredCities; }, filteredDistricts() { const filteredDistricts = this.districts.filter(district => this.selected.includes(district.parent)); return filteredDistricts; }, }, }; </script> ``` 在这个示例中,我们使用了uni-checkbox-group和uni-checkbox组件来实现多级联动复选框。我们将选中的地区存储在selected数组中,然后通过computed计算属性来动态过滤城市和区县数据。当某个城市或区县的parent值(即所属省份)在selected数组中时,才会显示相应的复选框,并且其他复选框会被禁用。这样就可以实现多级联动复选框的效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值