2012-03-14 132 views
-5

我想添加一个类到表中的一些单元格,如果它们的数值大于或等于某个值。如果语句总是评估为真的条件

这是我的代码。 re是添加类的阈值。

$("#battersTable td.runs").each(function() { 
    if($(this).html() >= re) { 
     $(this).addClass("elite"); 
    } 
}); 

然而,if语句的条件总是似乎以评估和true总是被添加的类!我究竟做错了什么?

+10

''re''中的're' mean是什么意思 – JaredPar 2012-03-14 07:55:26

+3

如果语句被执行,那*表示条件是'true' *。不是'if'声明是问题,你的情况是。 – deceze 2012-03-14 07:57:08

+0

对不起,它是一个前面定义的变量。我已经检查了值或this.html,并且在if语句时它们是正确的,但是无论条件如何,它都被输入。 – user1258430 2012-03-14 07:57:47

回答

1

声明:

if ($(this).html() >= re) 

很可能不这样做你想要做的事。

如果这些都应该是一个数字比较的数字,那么你需要做一个数字比较之前将字符串解析成一个数字(和重新必须为数字太):

if (parseInt($(this).html(), 10) >= re) 

一个例子re是什么,什么$(this).html()将允许我们给出更具体的答案。

+0

谢谢!我没有意识到this.html正在返回一个字符串感谢 – user1258430 2012-03-14 08:00:17

+0

你能告诉我什么是第二个参数10在这里面parseInt? – 2012-03-14 08:00:44

+0

如果返回的HTML是一个数值,它不应该是一个问题(虽然我也认为这是一个好主意)。请参阅:http://jsfiddle.net/qKUSh/ – m90 2012-03-14 08:01:07

0

猜测:

  • 您的问题是,当你再次运行此,类不会被删除
  • 你知道什么re是,并有可能与它没有任何问题,这就是为什么你没有表现出来

如果这是正确的,.toggleClass()应该可以帮助您:

$("#battersTable td.runs").each(function() 
{ 
    $(this).toggleClass("elite", $(this).html() >= re); 
}); 
0

使用此代码,它会工作

$("#battersTable td.runs").each(function() 
{ 
    var val = $(this).html(); 
    if(val == 're') 
    { 
     $(this).addClass("elite"); 
    } 
}); 

这里re是一个字符串,你不能在一个字符串中使用> =。