Select选中option的value为0却无法触发if语句执行问题
问题排查与解决方案
核心问题原因
问题根源是严格相等运算符===的类型匹配规则,以及DOM属性的取值类型特性:
从HTML元素option的value属性中读取到的值永远是字符串类型,你代码中获取的test实际是字符串"0",而"0" === 0的判断结果为false——因为===会同时校验值和数据类型,字符串和数字类型不一致,自然不会进入对应的if代码块。
你可以在代码中新增一行console.log(typeof test)验证,控制台会输出string,确认值的类型为字符串。
可行修复方案
- 方案1:调整判断条件为匹配字符串类型的0,改动最小:
if (test === "0") { - 方案2:将读取到的value转换为数字类型,保留原有判断逻辑:
const test = Number(typesSelect.options[typesSelect.selectedIndex].value); - 方案3:使用宽松相等运算符
==(不推荐,容易触发隐式类型转换带来的其他问题):if (test == 0) {
内容的提问来源于stack exchange,提问作者zyyyzzz
相关产品推荐
相关产品推荐

