我以前从来没有遇到过这个错误,每当我的jquery脚本将数字9和10或者99和100或者999和1000与9<10或99<100或999<1000进行比较时,我得到的结果是错误的,我得到的是假而不是真。我如何修复这个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,但我认为它们是相等的,不会进入。
发布于 2012-08-25 22:57:26
jQuery是Javascript。如果它是一个bug,那么它不是jQuery-Bug,而是Javascript-Bug。(编辑:有关于这句话的讨论。阅读评论)
尝试此解决方案:
变量被定义为字符串:
var a = "9";
var b = "10";此比较将重现您的结果:
if (a < b) ...当您将两个字符串与运算符<进行比较时,如果第一个操作数在第二个操作数之前按词法排序,则会得到true。您会得到这样的结果,因为在词法顺序中,以"1“开头的字符串将排在以"9”开头的字符串之前,而不管其长度如何。
试着这样做:
if (a-b < 0) ...术语a-b强制javascript处理数值计算。字符串将被转换为数字。
发布于 2012-08-25 22:53:10
你的代码很有可能是比较字符串而不是数字。
因此,尝试使用Number函数:Number(countcom) < Number(watchaget)。
发布于 2012-08-25 23:09:42
同样值得注意的是:
[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]https://stackoverflow.com/questions/12122973
复制相似问题