【发布时间】:2021-05-11 04:01:49
【问题描述】:
我正在使用一个简单的 if/else 来检查一个值是否大于另一个值,并显示适当的消息。
看起来像这样:
$.post('api/getHeaderBudgetvsTarget.php', {headercriteria:headercriteria}, function(data) {
let obj = JSON.parse(data);
let totalbudget = obj[0].budget; // set to 1600
let totaltarget = obj[0].target; // set to 300
if(totaltarget > totalbudget) {
console.log('greater');
} else if(totaltarget < totalbudget) {
console.log('lesser');
}
});
看上面的逻辑,应该清楚看到控制台应该显示“lesser”,因为totaltarget(300)不大于totalbudget(1600)。
但事实并非如此。出于某种原因,它说 totaltarget(300) 大于 totalbudget(1600) - 我不知道为什么。
我的 PHP 脚本 getHeaderBudgetvsTarget.php 没有做任何特别的事情。只是一个做一些计算的简单查询,如下:
<?php
$sql = "SELECT
( SELECT ROUND(SUM(budget)) FROM `budget` ) AS 'budget',
( SELECT ROUND(SUM(`average`)) FROM `main` ) AS 'target',
( SELECT ROUND(SUM(`totalcheck`)) FROM `main` ) - ( SELECT ROUND( SUM(`budget`) ) FROM `budget` ) AS `budgetvstotalcheck`";
?>
没什么特别的。
我检查了数据库设计。我能找到的唯一区别是预算表中的budget 列设置为小数。
主表中的average 列设置为mediumint。
我认为这些设置中的任何一个都不会真正产生影响(如果不是,请告诉我)。
我完全不明白为什么会这样。
我确实尝试了以下方法:
if($.isNumeric(totalbudget)) {
console.log('true');
} else {
console.log('false');
}
我检查了这两个变量,都显示为数字。
为什么这个特定的大于/小于逻辑不起作用?
【问题讨论】:
-
你知道“大于”和“小于”之间有一个案例,对吧?您是否尝试将“===”上发生的情况记录到控制台?
-
你能展示对象本身吗?
-
您的控制台是否出现任何错误?
-
但是
"1600" *is* < "300"... -
console.log('true');为什么不是console.log(totalbudget)或console.log(obj[0])?控制台会明确它是数字还是字符串(不同颜色,由"包围) - 例如console.log(300, "300")
标签: javascript php jquery if-statement