如何通过select下拉框选中项的value值调用对应名称的JS数组
问题原因
- 你从银行下拉框拿到的
a是字符串类型的标识,而非你提前定义的数组变量,直接调用a[b]实际是读取字符串对应索引的字符,自然拿不到预期的数组值 - 原有代码仅在页面加载时执行一次,后续用户切换下拉选项不会自动更新结果
- 月份下拉框拿到的
value是字符串类型,且数组索引从0开始,直接用拿到的1、2、3取值会出现索引偏移,取不到正确值
可行解决方案
推荐用对象统一映射所有银行的利率数组,同时给下拉框绑定切换事件,实现选项变更自动更新结果,后续新增银行仅需要修改映射配置即可,维护性更高:
// 用对象统一管理银行和对应利率数组的映射关系 const bankRateMap = { ACB: ["1%", "2%", "3%"], SCB: ["4%", "5%", "6%"] } // 提前获取需要操作的DOM元素 const bankSelect = document.querySelector('#bank') const monthSelect = document.querySelector('#month') const demoEle = document.querySelector('#demo') // 封装结果更新逻辑 function updateResult() { const selectedBank = bankSelect.value // 月份值转数字后减1,匹配数组从0开始的索引规则 const monthIndex = Number(monthSelect.value) - 1 // 从映射表中读取对应值 demoEle.innerHTML = bankRateMap[selectedBank][monthIndex] } // 页面加载时初始化结果 updateResult() // 给两个下拉框绑定切换事件,选项变化时自动更新结果 bankSelect.addEventListener('change', updateResult) monthSelect.addEventListener('change', updateResult)
如果一定要沿用你原有的全局数组定义,也可以用window[a]拿到对应数组,但这种方式依赖全局变量,容易出现变量冲突,稳定性差,不推荐使用。
内容的提问来源于stack exchange,提问作者nhadatsonnghia
相关产品推荐
相关产品推荐

