[英]JavaScript IF statement evaluating TRUE incorrectly - why?
对于客户购买的许可证数量与使用的数量,我有一个非常非常简单的逻辑测试:
else if(utype == "3"){
var tech_lic = $("#technician_lic").val();
console.log('tech lic = ' + tech_lic)
var tech_allow = $("#technician_lic_allow").val();
console.log('tech allow = ' + tech_allow)
if(tech_lic >= tech_allow)
{
alert("You must purchase more licenses to create this Technician");
return false;
}
我在console.log语句中尝试调试它-通常它们不存在。
单击“添加”按钮时的Console.log:
tech lic = 4 application.js:262
tech allow = 100 application.js:264
然后,在窗口中点击“您必须购买更多许可证”警报。
有没有搞错?
4> = 100如何评估为真?
因为.val
返回一个字符串。 '4'
确实大于或等于'100'
。 首先将值转换为数字(如果您知道出于比较的目的它们始终是数字)。
if (+tech_lic >= +tech_allow)
您正在将它们评估为字符串,因此“ 4”大于“ 100”。
在比较之前,您需要将它们转换为整数:
var tech_lic = parseInt($("#technician_lic").val(), 10);
var tech_allow = parseInt($("#technician_lic_allow").val(), 10);
字符串“ 4”大于“ 100”,而数字4小于100。
不是4 >= 100
是真实的,而是"4" >= "100"
是真实的。
您获得的值是字符串,因此将按词法而非数字进行比较。
将值解析为数字:
var tech_lic = parseInt($("#technician_lic").val(), 10);
var tech_allow = parseInt($("#technician_lic_allow").val(), 10);
这样做:
if(Number(tech_lic) >= Number(tech_allow))
{
// Do your stuff
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.