Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery条件不起作用_Javascript_Jquery_Conditional Statements - Fatal编程技术网

Javascript Jquery条件不起作用

Javascript Jquery条件不起作用,javascript,jquery,conditional-statements,Javascript,Jquery,Conditional Statements,我正在修复一个由其他人编码的网站。代码真的很混乱,所以我恐怕不能把它全部发布在这里,但我相信我提供了足够的信息,让你看到什么可能是错误的。因为在这一点上我迷路了 1。我们得到最小和最大限制 parent_id = '<?php echo $parent_id; ?>'; api = '<?php echo $api; ?>'; $.getJSON('getlimits.php', {'id': ""+parent_id+"", 'api': ""+api+""},

我正在修复一个由其他人编码的网站。代码真的很混乱,所以我恐怕不能把它全部发布在这里,但我相信我提供了足够的信息,让你看到什么可能是错误的。因为在这一点上我迷路了

1。我们得到最小和最大限制

parent_id = '<?php echo $parent_id; ?>';
api = '<?php echo $api; ?>';
    $.getJSON('getlimits.php', {'id': ""+parent_id+"", 'api': ""+api+""}, function(data) {
        // Loop and assign Json (returned value) to our limit variables
        $.each(data, function(key, val) {
            min_limit = key;
            max_limit = val;
        });
    });
amount = $('#quantity', this).val();

console.log(amount + ' - Max : ' + max_limit + ' Min : ' + min_limit);

if ( amount < min_limit) {
    displayError("You can't order less than " + min_limit + " units",2000);
    return false;
}
else if ( amount > max_limit ) {
    displayError("You can't order more than " + max_limit + " units.",2000);
    return false;
}
2。我们检查限制

parent_id = '<?php echo $parent_id; ?>';
api = '<?php echo $api; ?>';
    $.getJSON('getlimits.php', {'id': ""+parent_id+"", 'api': ""+api+""}, function(data) {
        // Loop and assign Json (returned value) to our limit variables
        $.each(data, function(key, val) {
            min_limit = key;
            max_limit = val;
        });
    });
amount = $('#quantity', this).val();

console.log(amount + ' - Max : ' + max_limit + ' Min : ' + min_limit);

if ( amount < min_limit) {
    displayError("You can't order less than " + min_limit + " units",2000);
    return false;
}
else if ( amount > max_limit ) {
    displayError("You can't order more than " + max_limit + " units.",2000);
    return false;
}
我打了800个单位。它不应该给出任何错误,但我得到以下错误

您不能订购超过15000台。

我真的迷路了。日志显示正确的值,getlimits.php返回正确的值,但如果条件不起作用则返回if&else

如果有人能帮我解决这个问题,我会很高兴的


提前谢谢。

通过
.val()
获取金额时,金额不是整数

因此,调整这条线:

amount = $('#quantity', this).val();

正如Dennis所指出的,您还必须
parseInt
从JSON中获取的值。(
min\u limit
max\u limit

正如Dennis还指出的,您应该添加
10
作为
parseInt
的第二个参数,以确保它解析为十进制数

因此:


确保调用
parseInt(number,10)
获取数值变量。看起来您正在比较字符串,这将给出与比较数字不同的结果。第二个参数(10)是基数,它将确保获得十进制值


您需要对min_limit和max_limit以及
.val()
调用执行此操作,该调用将始终返回字符串。

这是因为您正在对字符串进行比较:

"800" > "15000" === true
您需要使用parseInt将至少一个(最好是两个)转换为数字:

$.each(data, function(key, val) {
    min_limit = parseInt(key);
    max_limit = parseInt(val);
});

amount = parseInt($('#quantity', this).val());

您确定每个值都是int吗?尝试解析条件之前的每个值@Pixeler,你看到的最根本的原因是字符串“800”不是按字母顺序排列在字符串“10”和“15000”之间,这就是你要测试的。JSON键是字符串,所以这也是必要的。它还帮助提供10作为parseInt()的第二个参数,因此可以保证将其解析为十进制数(而不是八进制、十六进制等)
"800" > "15000" === true
$.each(data, function(key, val) {
    min_limit = parseInt(key);
    max_limit = parseInt(val);
});

amount = parseInt($('#quantity', this).val());