Javascript 有条件地更改表格单元格的背景色

Javascript 有条件地更改表格单元格的背景色,javascript,html,css,Javascript,Html,Css,我有一张有许多行的桌子。每行中都有一个id为“overwrite”的单元格。如果覆盖包含一个大于0的数字,我想将单元格的背景色更改为红色 我使用的javascript如下所示: $('#overwrite').each(function() { if (parseInt($(this).text()) > 0) { $(this).addClass('records_overwritten'); } }); 这只会更改一个单元格的背景色,而不会更改其他单元

我有一张有许多行的桌子。每行中都有一个id为“overwrite”的单元格。如果覆盖包含一个大于0的数字,我想将单元格的背景色更改为红色

我使用的javascript如下所示:

$('#overwrite').each(function() {
    if (parseInt($(this).text()) > 0) {
        $(this).addClass('records_overwritten');
    }
});
这只会更改一个单元格的背景色,而不会更改其他单元格的背景色,即使它们也包含大于0的值。我有点搞不清楚问题是什么

以下是表格行的示例:

<tr>
  <td>March 18, 2014</td>
  <td>John Smith</td>
  <td>5</td>
  <td>10</td>
  <td id="overwrite">1</td>
  <td>56</td>
</tr>

2014年3月18日
约翰·史密斯
5.
10
1.
56

假定
id
属性对于页面是唯一的,因此jQuery仍然会停止查找页面。您可以使用下面的选择器
[id=“overwrite”]
来解决这个问题,但您确实应该使用类或其他东西。

因为
id
在页面上必须是唯一的,
$(“#overwrite”)
将返回最多一个元素-使用类而不是重复的
id

$('.overwrite').each(function() {
    if (parseInt($(this).text(), 10) > 0) {
        $(this).addClass('records_overwritten');
    }
});
此外,如果要检查的列始终是每行的第5个
,您还可以避免插入不必要的属性,并且可以使用
$('trtd:nth child(5)')检索这些元素

还要注意的是,
parseInt
需要一个基数作为第二个参数

将id更改为class

 <tr>
  <td>March 18, 2014</td>
  <td>John Smith</td>
  <td>5</td>
  <td>10</td>
  <td class="overwrite">1</td>
  <td>56</td>
 </tr>

ID在页面上是唯一的,所以$('#ID')。每个都不是一个好主意。也许您可以使用class或attr值进行标识

关于背景设置:这里最接近()是一个很好的解决方案


$(.overwrite”).closest(“tr”).css(“背景色”、“红色”)

在一个文档中只能使用一个ID值。ID应该是唯一的。问题是重复的ID Fabrizio,我将您的代码(和他的代码)放入了一个文件夹中。它仍然不起作用。如果您想调整它,使其正常工作,并将其添加到您的答案中,可能会对Graham有很大帮助。@Thomas如果您使用jQuery代码,则必须包含jQuery库。现在,在你的小提琴中没有包含任何库;)谢谢,我添加了它,它很有效。链接是
http://jsfiddle.net/F2Q3V/1/
。如果你愿意,你可以把它添加到你的答案中。希望格雷厄姆会选择你的答案。
 $('.overwrite').each(function() {.....