提问者:小点点

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


我有一张有很多排的桌子。在每一行中,都有一个id为覆盖的单元格。如果覆盖包含一个数字

我有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>

共3个答案

匿名用户

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

$('.overwrite').each(function() {
    if (parseInt($(this).text(), 10) > 0) {
        $(this).addClass('records_overwritten');
    }
});

此外,如果要检查的列始终是第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>

并使用类选择器代替

 $('.overwrite').each(function() {.....

匿名用户

id属性被假定为页面唯一的,因此jQuery在找到一个页面后仍然停止查找。您可以通过使用以下选择器[id="over写"]来解决这个问题,但是您真的应该使用类或其他东西。