1

我对返回意外结果的愚蠢 if 条件感到非常困惑,我只是无法弄清楚我的代码中有什么问题。这是我的简单代码

$('.for_next_link').click(function() {

    var next = $('.for_next_value_pagination').val();
    var limit = "<?php echo $max; ?>";

    alert(next); // value is 5
    alert(limit); // value is 10

    if (next >= limit) // this condition is always true
    {
        alert('im in if cond.');
        return false;
    }
    else {
        // do something else;
    }
});​

我正在比较 2 个变量“next”和“limit”,它们的值分别为 5 和 10,但令 if 条件始终为真感到惊讶。你能告诉我为什么会发生这种情况以及解决方案是什么。谢谢你。

4

4 回答 4

1

你正在做字符串比较,来自萤火虫的控制台,

>>> "5">"10"
true

>>> 5>10
false

>>> "5">10
false

>>> 5>"10"
false
于 2012-09-12T08:48:17.283 回答
0

发生这种情况是因为您正在比较字符串:

"5" >= "10" is true

强制其中一个演员

if(next*1 >= limit*1) is false
于 2012-09-12T08:48:17.747 回答
0

您正在比较两个字符串值,而不是两个数字。试试这个:

if(Number(next) >= Number(limit)){

因为字符“5”的ASCII值高于“1”(“10”的第一个字符),所以“5”被认为大于“10”

于 2012-09-12T08:49:06.673 回答
0

您实际上是在比较"5"(a string) 和"10"(also a string); "5" > "10"true因为,按字母顺序,5在 之后1

相反,用数字比较它们:

if(parseInt(next, 10) >= parseInt(limit, 10))

(您可能希望在初始化变量的同时解析它们,如下所示)

var next = parseInt($('.for_next_value_pagination').val(), 10);
var limit = parseInt("<?php echo $max; ?>", 10);
于 2012-09-12T08:49:13.350 回答