我使用此代码段根据正值或负值更改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,它将显示绿色,尽管它需要显示红色,因为它有 - 之前的值。
为什么会这样?解决问题的最佳方法是什么?
提前致谢
答案 0 :(得分:3)
尝试使用parseFloat
代替parseInt
。 parseInt
会将-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>
答案 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');}});