第八章_案例开发全功能(全选功能、二级省市联动)
全选功能
html 结构
<style>
table {
margin: 0 auto;
width: 800px;
height: 500px;
border: 3px solid;
text-align: center;
border-collapse: collapse;
}
tr>td {
border: solid 1px;
}
</style>
<table>
<tr>
<td>
<input type="checkbox" name="select-all" onclick="selectAll(this)">全选
</td>
<td>用户名</td>
<td>邮箱</td>
<td>电话号码</td>
<td>性别</td>
<td>操作</td>
</tr>
<tr>
<td><input type="checkbox" name="choice"></td>
<td>Kitty</td>
<td>12312424.@qq.com</td>
<td>18877305825</td>
<td>男</td>
<td>发邮件 封号 编辑</td>
</tr>
<tr>
<td><input type="checkbox" name="choice"></td>
<td>Kitty</td>
<td>12312424.@qq.com</td>
<td>18877305825</td>
<td>男</td>
<td>发邮件 封号 编辑</td>
</tr>
<tr>
<td><input type="checkbox" name="choice"></td>
<td>Kitty</td>
<td>12312424.@qq.com</td>
<td>18877305825</td>
<td>男</td>
<td>发邮件 封号 编辑</td>
</tr>
</table>
js 代码实现
selectAll(choiceBtn)
全选复选框功能- 菜单的
input
绑定点击事件 onclick="selectAll(this)"
- 这里参数直接使用
this
传入,表示这个元素 input
,这样就直接拿到这个元素 getElementsByName()
,通过元素的 name
属性获取所有的用户复选框- 使用
for 循环
将每一个用户复选框的,状态统一设置
function selectAll(choiceBtn)
{
var allChecked = document.getElementsByName("choice");
console.log("以收集到的复选框个数:" + allChecked.length);
for (let i = 0; i < allChecked.length; i++)
{
allChecked[i].checked = choiceBtn.checked;
}
}
效果图
全不选中
全选中
二级省市联动
html 结构
<style>
select {
width: 200px;
height: 40px;
font-size: 20px;
text-align: center;
border: 2px solid;
}
</style>
<select name="" id="" onchange="proivnceChang(this)" onfocus="console.log('聚焦选择省')">
<option value="-1">-请选择-</option>
<option value="0">北京市</option>
<option value="1">河南省</option>
<option value="2">河北省</option>
<option value="3">陕西省</option>
<option value="4">山东省</option>
</select>
<select id="city" onfocus="console.log('聚焦选择市')">
<option value="-1">-请选择-</option>
</select>
js 实现
1. 使用二维数组
var provinceArr = new Array(5);
provinceArr[0] = new Array("北京市")
provinceArr[1] = new Array("郑州市", "洛阳市", "濮阳市", "驻马店市");
provinceArr[2] = new Array("石家庄", "唐山", "秦皇岛", "邯郸");
provinceArr[3] = new Array("西安市", "宝鸡市", "延安");
provinceArr[4] = new Array("菏泽市", "济南市", "青岛");
2. 省份切换联动功能
- 当切换省份时、会自动筛选出,当前省份地区对应的城市
- 省份选择
select
元素绑定 onchange="provinceChang(this)"
事件、数值发生改变时调用此函数,传入 this
select
的 value
值其实就是 option
的 value
属性的值,所以可以当作数组下标来使用(值为数字)- 通过动态的给
城市
列表(select
),添加、删除 option
节点、实现二级省市联动 - 以此类推,还可以使用三维数组等,多级联动
function provinceChang(province)
{
var city = document.getElementById("city");
if (province.value == "-1")
{
city.innerHTML = '<option value="-1">-请选择-</option>';
return;
}
var cityArr = provinceArr[province.value];
city.options.length = 0;
for (var i = 0; i < cityArr.length; i++)
{
var cityOption = document.createElement("option");
cityOption.innerText = cityArr[i]
city.appendChild(cityOption);
}
}
效果图
省份选择
对应的城市选择