表单联动时下拉框选项不更新怎么办?
我在做省市区三级联动,选了省份后,城市下拉框没反应,明明数据已经拿到了。我用的是原生JS监听change事件,然后动态修改select的innerHTML,但页面就是不刷新。
试过console.log确认数据没问题,也试过把innerHTML换成appendChild,还是不行。是不是哪里没触发重绘?
document.getElementById('province').addEventListener('change', function() {
const cities = fetchData(this.value); // 返回数组如 ['杭州', '宁波']
const citySelect = document.getElementById('city');
citySelect.innerHTML = cities.map(c => <option value="${c}">${c}</option>).join('');
});
1. 先缓存DOM元素,别每次都去
getElementById2. 用
document.createDocumentFragment()来批量操作DOM,比直接改innerHTML性能好3. 最后再一次性插入到select里
改完的代码长这样:
这招我用了好几年了,性能杠杠的。另外检查下你的
fetchData是不是真的返回了数组,有时候异步回调里console.log看着有数据但其实还没返回。