JavaScript中如何通过if语句修改指定id的input值并实现实时更新
问题原因
你代码里的bug出在变量取值的逻辑错误:
- 你已经通过
var nilaicli = this.value把输入框的值取出来赋值给nilaicli了,它本身就是字符串类型的输入值,不存在.value属性 - 后续执行
parseFloat(nilaicli.value)的时候拿到的永远是undefined转成的NaN,就会一直命中|| 2的默认值,所以计算出来的数值永远是2,只会走第一个if分支 - 额外存在的隐患是你原来用
toFixed(2)返回的字符串做大小判断,会出现字符串比较的逻辑异常,比如"100" < "90"的判断结果为true,会导致分支判断错误
修正后的JS代码
$("#inputDatabaseName").on("keyup", function(e) { var nilaicli = this.value, skorcli = document.getElementById("skorclis"); // 直接对输入值转数值,不需要加.value;如果需要非数字输入默认取2,把0改成2即可 var cli1 = parseFloat(nilaicli) || 0; if (cli1 <= 39.99 && cli1 >= 0) { skorcli.value = 1; } else if (cli1 >= 40.0 && cli1 <= 59.99) { skorcli.value = 2; } else if (cli1 >= 60.0 && cli1 <= 79.99) { skorcli.value = 3; } else if (cli1 >= 80.0 && cli1 <= 89.99) { skorcli.value = 4; } else if (cli1 >= 90.0 && cli1 <= 100) { skorcli.value = 5; } else { // 超出0-100范围的情况可按需调整逻辑,这里是清空值 skorcli.value = ''; } });
内容的提问来源于stack exchange,提问作者Baharudin . M
相关产品推荐
相关产品推荐

