我非常困惑一个愚蠢的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的条件始终为真。 你能告诉我为什么会这样,解决方案是什么。 谢谢。
答案 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);