JavaScript IF语句计算TRUE错误-为什么
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当我点击"add"按钮时:
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
}
相关文章:
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 为什么忽略了eval()代码中的语法错误
- 为什么会出现错误,“UncaughtTypeError:undefined不是函数”
- 为什么jasmine期望不验证是否抛出了错误
- 为什么我得到错误IE修剪方法是't支持
- 为什么不'当单元测试出现解析错误时,我的因果报应测试会失败
- 为什么浏览器没有为语法错误抛出异常
- 我不知道为什么我的代码是错误的?又有什么错
- 为什么我会出现此错误"未捕获引用错误:未定义标题;
- Webrtc和socket.io:createanswer()总是有一个错误.为什么?我的代码连接了两个对等体,但其中只
- $.ajax():responseText 是正确的,但报告了错误.为什么
- "无法调用方法'appendchild'为空“;..错误为什么?
- JavaScript IF语句计算TRUE错误-为什么
- Javascript解析错误-为什么
- 图像在弹出框中正确显示,但保存时返回未定义错误.为什么
- JavaScript单例类型错误:为什么严格模式会标记这个
- 删除的AJAX路由错误.为什么索引页出现DELETE路由错误
- 当我使用全局作用域变量没有'var',它显示我错误.为什么
- Nodejs:在将文件写入hd后访问文件会产生错误.为什么
- 页面部分加载时出现Javascript访问拒绝错误-为什么?