根据正值或负值更改div类 - 发出值介于1/0 / -1之间

时间:2017-11-03 13:23:39

标签: javascript jquery html css class

我使用此代码段根据正值或负值更改div的类别

<script type="text/javascript">$('.price-change').each(function() {
    if (parseInt($(this).text()) < 0) {
        $(this).addClass('negative');
    }
else if (parseInt($(this).text()) >= 0) {
    $(this).addClass('positive');
}
});</script>

我遇到的问题是介于0和1以及0和-1之间的值。因此,如果值为-0.15,它将显示绿色,尽管它需要显示红色,因为它有 - 之前的值。

为什么会这样?解决问题的最佳方法是什么?

提前致谢

4 个答案:

答案 0 :(得分:3)

尝试使用parseFloat代替parseIntparseInt会将-0.15转换为0,而parseFloat会将其与实际的-0.15进行比较。

<script type="text/javascript">
  $('.price-change').each(function() {
    if (parseFloat($(this).text()) < 0) {
      $(this).addClass('negative');
    } else if (parseFloat($(this).text()) >= 0) {
      $(this).addClass('positive');
    }
  });
</script>

小例子:http://jsfiddle.net/6mymcn4c/1/

答案 1 :(得分:1)

尝试.parseFloat()

$('.price-change').each(function() {
  if (parseFloat($(this).text()) < 0) {
    $(this).addClass('negative');
  } else if (parseFloat($(this).text()) >= 0) {
    $(this).addClass('positive');
  }
});

<强>演示

$('.price-change').each(function() {
  if (parseFloat($(this).text()) < 0) {
    $(this).addClass('negative');
  } else if (parseFloat($(this).text()) >= 0) {
    $(this).addClass('positive');
  }
});
.negative{
color: blue;}
.positive{color:red}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="price-change">1</div>
<div class="price-change">0</div>
<div class="price-change">-0.15</div>
<div class="price-change">-10</div>

答案 2 :(得分:0)

  

为什么会发生这种情况

添加console.log(parseInt($(this).text(),10)),您就会看到发生了什么。

parseInt转换为最接近的整数(整数)。 -0.15不是整数,因此将舍入为零,在您的情况下为正。

  

有什么方法可以修复它?

您可以改为使用parseFloat()

$('.price-change').each(function() {
  var val = parseFloat($(this).text());
  $(this).addClass(val < 0 ? 'negative' : 'positive');
]);

或者您可以使用其他函数,例如floor,它返回小于或等于给定数字的最大整数(即总是向向下舍入)。

$('.price-change').each(function() {
  var val = Math.floor($(this).text());
  $(this).addClass(val < 0 ? 'negative' : 'positive');
]);

答案 3 :(得分:0)

您可以使用try和catch来处理这些错误 http://www.javascriptkit.com/javatutors/trycatch.shtml 要么 你可以使用If条件并在这些已知条件下手动处理输出结果代码

最后你可以使用它:

$('。price-change')。each(function(){var x = parseFloat($(this).text(); If(x&gt; 0){x.addClass('negative');} else {x.addClass('positive');}});