jquery比较2个变量给出了意想不到的结果

时间:2012-09-12 08:46:10

标签: jquery variables

我非常困惑一个愚蠢的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 个答案:

答案 0 :(得分:1)

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

>>> "5">"10"
true

>>> 5>10
false

>>> "5">10
false

>>> 5>"10"
false

答案 1 :(得分:0)

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

"5" >= "10" is true

强制施放其中一个

if(next*1 >= limit*1) is false

答案 2 :(得分:0)

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

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

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

答案 3 :(得分:0)

您实际上是在比较"5"(字符串)和"10"(也是字符串); "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);