【问题标题】:greater than less than fail大于小于失败
【发布时间】: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* &lt; "300"...
  • console.log('true'); 为什么不是console.log(totalbudget)console.log(obj[0])?控制台会明确它是数字还是字符串(不同颜色,由" 包围) - 例如console.log(300, "300")

标签: javascript php jquery if-statement


【解决方案1】:

参考docs

$.isNumeric() 仅当参数的类型为 number,或者它的类型为 string 并且可以强制转换为有限数时才返回 true

所以$.isNumeric("300") 仍然正确。在比较它们之前,您应该将变量转换为数字:

 if (+totaltarget > +totalbudget)...

【讨论】:

  • 将变量转换为数字解决了我的问题: let totalbudget = Number(obj[0].budget); // 设置为 1600 let totaltarget = Number(obj[0].target); // 设置为 300 谢谢。
猜你喜欢
  • 2012-02-22
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 2022-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多