Javascript更改文本颜色

Javascript更改文本颜色,javascript,html,Javascript,Html,我有一个HTML表格,显示如下值: <table id="tableID"> <thead> <tr> <th>Column heading 1</th> <th>Column heading 2</th> <th>Column heading 3</th> <th>Column heading 4</th> </tr> </the

我有一个HTML表格,显示如下值:

<table id="tableID">
<thead>
<tr>
  <th>Column heading 1</th>
  <th>Column heading 2</th>
  <th>Column heading 3</th>
  <th>Column heading 4</th>
</tr>
</thead>
<tbody>
<tr>
 <td> ID (43.1)</td>
  <td>Class (-23)</td>
  <td>Age (89.6)</td>
  <td>Num (-5)</td>
</tr>
<tr>
  <td>ID (-4)</td>
  <td>Class (-3)</td>
  <td>Age (0)</td>
  <td>Num (98)</td>
</tr>
<tr>
  <td>ID (10)</td>
  <td>Class (-32)</td>
  <td>Age (7)</td>
  <td>Num (2)</td>
</tr>

列标题1
列标题2
列标题3
列标题4
ID(43.1)
类别(-23)
年龄(89.6岁)
数字(-5)
ID(-4)
类别(-3)
年龄(0)
总数(98)
ID(10)
类别(-32)
年龄(7岁)
数字(2)
手头的任务是,我喜欢根据条件更改文本颜色。如果该值为负值,则应显示为红色,否则显示为绿色。 我不知道如何改变这一点,直到现在我能够创建下面的javascript代码,但不确定如何处理文本颜色以及应该使用哪个事件。有人能给我指路吗

var table = document.getElementById('tableID'),
cells = table.getElementsByTagName('td');

for (var i=0,len=cells.length; i<len; i++){
cells[i].onready = function(){ // onready .. will that work??
    console.log(this.innerHTML);

}
}
var table=document.getElementById('tableID'),
cells=table.getElementsByTagName('td');

对于(var i=0,len=cells.length;i获取单元格,迭代它们,获取数字,再次比较零以查看是否为负/正,设置颜色,完成

var cells = document.querySelectorAll('#tableID td');

for ( var i=0; i<cells.length; i++ ) {
    var cell    = cells[i];
    var html    = cell.innerHTML;
    var changed = html.replace(/([+-]?(\d|\.)+)/, function(x) {
        var color = (+x) < 0 ? 'red' : 'green';
        return '<span style="color: ' + color + '">' + x + '</span>';
    });

    cell.innerHTML = changed;
}
var cells=document.querySelectorAll('tableID td');

对于(var i=0;i我与Tushar的观点相同。如果此表是动态生成的,则根据该值向
添加类非常容易。如果不是手动生成的表,则可以应用相同的方法

如果您仍然希望使用Javascript实现这一点(我不同意),那么您可能希望确保数值仅在
中,以便您可以检查其值并将类分配给其父类


该类可以在您的样式中预定义,以提供不同的颜色。

如果您不想在后端处理它,并且您确信字符负号(-)将仅用于数字,可以尝试此方法

  var table = document.getElementById('tableID'),
  cells = table.getElementsByTagName('td');

  for (var i = cells.length - 1; i >= 0; i--) 
  {
    if( cells[i].innerHTML.indexOf('-') !== -1 )
      cells[i].style.color = 'red';
    else
      cells[i].style.color = 'green';
  }

我会这样做:

var cells = document.querySelectorAll("table td");
for (var i = 0, len = cells.length; i < len; i++) {
  var num = parseInt(cells[i].innerHTML.split("(")[1].split(")")[0]);
  if (num < 0) {
    cells[i].style.background = "red";
  } else {
    cells[i].style.background = "lightgreen";
  }
}
var cells=document.querySelectorAll(“表td”);
对于(变量i=0,len=cells.length;i


还请注意,您可以使用
document.querySelectorAll
直接查找元素。

这应该在服务器上完成,生成HTMLcan时,您可以提供一个示例代码来调整代码。我可以在此基础上构建它吗?
$row
在这里看起来是什么样子?如果您添加定期迭代来创建单元格,而不是使用标记内爆行以创建四个单元格建议:使用
/([+-]?\d+)/
而不是匹配括号内的任何内容。更灵活。@Tushar-当然,只匹配连字符和数字可能会更好。幸运的是,它改变了表格的整个颜色,并使其green@user4943236你检查过小提琴了吗?是的,小提琴看起来不错,但在执行此操作时,它会改变颜色..和还有一件事,我只需要改变括号内文本的颜色就可以了。不是整个文本。谢谢你的评论。我编辑了我的评论,我可以知道如何调整动态生成的表格吗。我不懂HTML和CSS。你能告诉我怎么做吗
var cells = document.querySelectorAll("table td");
for (var i = 0, len = cells.length; i < len; i++) {
  var num = parseInt(cells[i].innerHTML.split("(")[1].split(")")[0]);
  if (num < 0) {
    cells[i].style.background = "red";
  } else {
    cells[i].style.background = "lightgreen";
  }
}