博主:初映CY的前说(前端领域) ,本文核心:用原生js实现省市区联动
【前言】今日在复习省市县三级联动的时候,有点忘了原生的js应该怎么样处理省市县的联动,特此写下来再次复习下
首先的话,我们先写一下静态的页面结构
(以下是关键代码)
<div class="row mb-3">
<label class="col-sm-2 col-form-label-sm">籍贯</label>
<div class="col-sm-3">
<select class="form-select form-select-sm" name="province">
<option selected value="">--省--</option>
</select>
</div>
<div class="col-sm-3">
<select class="form-select form-select-sm" name="city">
<option selected value="">--市--</option>
</select>
</div>
<div class="col-sm-3">
<select class="form-select form-select-sm" name="county">
<option selected value="">--区/县--</option>
</select>
</div>
</div>
用js获取相对应的DOM
// 三省联动dom节点的获取
const province = document.querySelector('[name="province"]')
const city = document.querySelector('[name="city"]')
const county = document.querySelector('[name="county"]')
const getProvince = async () => {
const { data } = await axios.get('/geo/province')
console.log(data);
province.innerHTML = `` + data.map(item => `"> ${item} `).join('')
}
const getCity = async () => {
const { data } = await axios.get(`/geo/city?pname=${province.value}`)
console.log(data);
city.innerHTML = `` + data.map(item => `"> ${item} `).join('')
}
const getCounty = async () => {
const { data } = await axios.get(`/geo/county?pname=${province.value}&cname=${city.value}`)
console.log(data);
county.innerHTML = `` + data.map(item => `"> ${item} `).join('')
}
注意点:option的值是通过value获取,map需要与joio一起使用(map返回值是产生新的数组,join将与其拼接)
// change事件
province.addEventListener('change', function () {
getCity()
county.innerHTML = ``
})
// 市change事件
city.addEventListener('change', function () {
getCounty()
})
注意点:注意联级调用,一层层的触发的呦。
至此本文结束,愿你有所收获!
期待大家的关注与支持! 你的肯定是我更新的最大动力!!!