比较两个数字9 <10

时间:2012-08-25 14:50:06

标签: jquery

我之前从未遇到过这个错误,每当我的jquery脚本比较数字9和10或99和100或999和1000与9 <10或99 <100或999 <1000时我得到错误的结果,I得到假而不是真。 我该如何解决这个jquery错误? 谢谢。

Jquery的:

interval = setInterval(function(){
                $.post('help/retrivetable.php', { tableimpulse : sessid } , 
                    function(watchaget) {
                        if (countcom < watchaget)
                        {
                            countcom = watchaget;
                            $.post('help/retrivetable.php', { newtableimpulse : sessid } , 
                                function(getit) {
                                    $("#chat").append("<p id="+countmsg+">"+getit+"</p>");
                                    var scrolldown = $('#chat')[0].scrollHeight;
                                    $('#chat').animate({scrollTop:scrolldown}, 200);
                            }); 
                        }
                }); 
            }, 50); 

当countcom = 9且watchaget = 10时,它应输入if if,但我认为它们相同并且不会进入它。

4 个答案:

答案 0 :(得分:12)

jQuery是Javascript。如果它是一个bug,它不是jQuery-Bug而是Javascript-Bug。 (编辑:有关于这句话的讨论。阅读评论)

试试这个解决方案:

变量定义为字符串:

var a = "9";
var b = "10";

此比较将重现您的结果:

if (a < b) ...

当您将两个字符串与运算符<进行比较时,如果第一个操作数将在第二个操作数之前进行词法排序,则会得到true。你得到这个结果,因为在词汇顺序中,一个字符串以&#34; 1&#34;开头。将以&#34; 9&#34;开头的字符串排序,无论其长度如何。

请改为尝试:

if (a-b < 0) ...

术语a-b强制javascript处理数值计算。字符串将转换为数字。

答案 1 :(得分:5)

您的代码很可能是比较字符串而不是数字。

尝试使用Number功能:Number(countcom) < Number(watchaget)

答案 2 :(得分:1)

另外值得注意的是:

[7,8,9,10].sort() // => [10, 7, 8, 9]

sort函数默认将元素转换为字符串。为了避免这种情况:

[7,8,9,10].sort(function(a, b) { return a - b; }) // => [7, 8, 9, 10]

答案 3 :(得分:1)

您正在比较两个字符串值。尝试使用parseInt(value, 10)

将字符串值解析为int

在你的情况下,

    if (parseInt(countcom,10) < parseInt(watchaget,10))
    {
       ....
    }

希望它有所帮助。