【问题标题】:Comparing negative values does not work properly in Javascript比较负值在 Javascript 中无法正常工作
【发布时间】:2017-07-14 11:47:26
【问题描述】:

我有以下代码,它根据单元格内的数值更改表格数据单元格的背景颜色。
虽然所有其他比较都按预期工作,但 (val 比较永远不会进入块。
这是代码:

//Change Background Color for all P/L values
$(".PLcolors").each(function(index, value) {

  var val = Number(parseFloat($(this).text(), 10));

  console.log("value is " + val);

  if (val === 0) {
    $(this).css("background-color", "#DCDCDC");
  } else if ((val => -3000) && (val <= 3000)) {
    $(this).css("background-color", "#F0E68C");
  } else if (val < (-3000)) {
    $(this).css("background-color", "#FF0000");
  } else if ((val > 3000)) {
    $(this).css("background-color", "#008000");
  }
});

val 变量的类型是数字。

【问题讨论】:

  • 请分享小提琴以获得更好的清晰度
  • val 变量的值是多少?
  • parseFloat 只接受 1 个参数。什么给了你console.log($(this).text())
  • @amoeba 抱歉,我无法共享 Fiddle,因为数据是从本地网络服务器实时获取的。
  • @Sergio 控制台返回值-4282,完全没有任何额外的字符。该操作针对多个值运行,因此格式似乎不是主要问题,因为对于 > 3000 的正数,比较和着色按预期执行。

标签: javascript jquery comparison


【解决方案1】:

你的 JS 里面有一个错误,你设置了=&gt; 而不是&gt;=。将其修复为:

else if (val >= -3000 && val <= 3000) {

//Change Background Color for all P/L values
$(".PLcolors").each(function(index, value) {

  var val = Number(parseFloat($(this).text(), 10));

  console.log("value is " + val);

  if (val === 0) {
    $(this).css("background-color", "#DCDCDC");
  } else if (val >= -3000 && val <= 3000) {
    $(this).css("background-color", "#F0E68C");
  } else if (val < -3000) {
    $(this).css("background-color", "#FF0000");
  } else if ((val > 3000)) {
    $(this).css("background-color", "#008000");
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="PLcolors">1</li>
  <li class="PLcolors">-3001</li>
  <li class="PLcolors">3001</li>
  <li class="PLcolors">0</li>
</ul>

【讨论】:

  • 天哪!这么小的错别字!感谢您指出!问题已解决,现在一切正常!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多