【问题标题】:Using javascript to turn positive numbers green but only in certain table columns [closed]使用javascript将正数变为绿色,但仅在某些表列中[关闭]
【发布时间】:2017-02-06 09:20:07
【问题描述】:

这整个早上都在折磨我的大脑,希望有人可以在这里帮助我:)

假设我的网页包含在下面的代码中的表格,CSS 和 javascript 用于将所有负值变为红色。我将如何添加代码以将正值变为绿色,但仅在 clolumn 的 3 和 4 中?我希望第 1 列和第 2 列中的正数保持原样。

请注意,javascript不是我的代码,我对javascript一无所知,因为我主要在PHP中工作,我是在搜索google时找到的。

我已尝试更改代码,如果我在所有值的数字前面都加上 +,则可以让它工作,但是正数前面不能有 +。

function MakeNegative() {
  TDs = document.getElementsByTagName('td');
  for (var i = 0; i < TDs.length; i++) {
    var temp = TDs[i];
    if (temp.firstChild.nodeValue.indexOf('-') == 0) temp.className = "negative";
  }
}
MakeNegative();
td.negative {
  color: red;
}
<table>
<tr>
    <td rowspan="2" align="center">Class 1</td>
    <td colspan="3" align="center">Class 2</td>
    <td colspan="3" align="center">Class 3</td>
    <td colspan="3" align="center">Class 4</td>
</tr>
<tr>
    <td align="center">Column 1</td>
    <td align="center">Column 2</td>
    <td align="center">Column 3</td>
    <td align="center">Column 4</td>
    <td align="center">Column 5</td>
    <td align="center">Column 6</td>
    <td align="center">Column 7</td>
    <td align="center">Column 8</td>
    <td align="center">Column 9</td>
</tr>
  <tr>
    <td>70.6</td>
    <td>122.4</td>
    <td>-87.1</td>
    <td>99.2</td>
    <td>70.6</td>
    <td>122.4</td>
    <td>-87.1</td>
    <td>99.2</td>
    <td>99.2</td>
  </tr>
</table>

【问题讨论】:

  • Stack Overflow 并不是为你编写代码的。学习 JavaScript,尝试自己解决这个问题,如果遇到任何具体问题,请在此处提问。
  • 首先尝试为正面颜色添加一段css。然后搜索 JavaScript 添加 .negative 类的位置。在那里,您可以尝试自己添加一段 Javascript 以使正值变为绿色。当你尝试过但它不起作用时,我们会看到你。

标签: javascript


【解决方案1】:

请检查下面的sn-p。

function MakeNegative() {
  Trs = document.getElementsByTagName('tr');
  for (var i = 1; i < Trs.length; i++) {
    var temp = Trs[i];
    Tds = temp.getElementsByTagName('td');
    for(var j=0;j<Tds.length;j++){
      if (Tds[j].firstChild.nodeValue.indexOf('-') == 0) Tds[j].className = "negative";
      if (Tds[j].firstChild.nodeValue.indexOf('-') !== 0 && (((j+1)%3==0)||((j+1)%4==0))) Tds[j].className = "positive";
    }
  }
}
MakeNegative();
td.negative {
  color: red;
}
td.positive {
  color: green;
}
<table>
  <tr>
    <td>Column 1</td>
    <td>Column 2</td>
    <td>Column 3</td>
    <td>Column 4</td>
  </tr>
  <tr>
    <td>70.6</td>
    <td>122.4</td>
    <td>-87.1</td>
    <td>99.2</td>
  </tr>
  <tr>
    <td>70.6</td>
    <td>-122.4</td>
    <td>87.1</td>
    <td>99.2</td>
  </tr>
</table>

【讨论】:

    【解决方案2】:

    当您更改列或行的大小时,这应该可以工作。

    function MakePosNeg() {
      TRs = document.getElementsByTagName('tr');
      TDs = document.getElementsByTagName('td');
      var n = 0;
      var b = TDs.length / TRs.length - 1;
      
      for (var i = 0; i < TDs.length; i++) {
        if(n > b) n = 0;
        var temp = TDs[i];
        if (parseFloat(temp.firstChild.nodeValue) < 0) temp.className = "negative";
        
        if(n == 2 || n == 3){
        	if (parseFloat(temp.firstChild.nodeValue) >= 0) temp.className = "positive";
        }
        n++;
      }
    }
    MakePosNeg();
    td.negative {
      color: red;
      font-weight: bold;
    }
    td.positive {
      color: green;
      font-weight: bold;
    }
    <table>
      <tr>
        <td>Column 1</td>
        <td>Column 2</td>
        <td>Column 3</td>
        <td>Column 4</td>
        <td>Column 5</td>
        <td>Column 6</td>
      </tr>
      <tr>
        <td>-70.6</td>
        <td>-99.2</td>
        <td>122.4</td>
        <td>-87.1</td>
        <td>99.2</td>
        <td>99.2</td>
      </tr>
      <tr>
        <td>-70.6</td>
        <td>122.4</td>
        <td>87.1</td>
        <td>-99.2</td>
        <td>-99.2</td>
        <td>99.2</td>
      </tr>
      <tr>
        <td>70.6</td>
        <td>122.4</td>
        <td>87.1</td>
        <td>99.2</td>
        <td>-99.2</td>
        <td>99.2</td>
      </tr>
      <tr>
        <td>70.6</td>
        <td>122.4</td>
        <td>-87.1</td>
        <td>99.2</td>
        <td>-99.2</td>
        <td>-99.2</td>
      </tr>
    </table>

    【讨论】:

    • 谢谢,你能给我解释一下代码吗?它如何选择哪些列使正数变为绿色?谢谢
    • @LeePerkins 好的。 n 是变量以确定它是第 3 列还是第 4 列。 b 是列数。在循环内部,如果活动列大于最大值,则将其设为 0。如果活动列为 3 或 4(在数组中为 2 和 3),则将其设为绿色。在循环结束时,我们增加活动列号。有什么不懂的可以问。
    • 在这种情况下,我们有 25 个单元格。所以在数组中它的地址从 0 到 24。这就是我们检查 2 和 3(而不是 3 和 4)的原因。
    • 谢谢老兄,感激不尽!!!我在列行上方还有另一个标题行,而 colspan/rowspan 将其丢弃。我没有将它包含在原始问题中,因为我认为它不相关,但是我已对其进行了更新以反映这一点。我正在尝试自己弄清楚,但是如前所述,我不知道 javascript,所以可以这么说,我可能会遇到一堵砖墙。如果您愿意,请您指出我编辑代码以反映新表结构的方向吗?
    • @LeePerkins 你能在这里粘贴新的 html 表结构吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 2018-11-15
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多