十进制javascript-toFixed

时间:2016-03-03 02:04:02

标签: javascript jquery

我有一些标签" span"在我的"产品"的价格(0.9; 1.23; 9.0)中,我使用方法" toFixed(2)"有两个小数位。 问题是,现在我所有的价格都是相同的价值:0.90。 我该怎么做才能使方法" toFixed"采取我的"跨度"分别? 我的代码:

//show two decimals
  var price = parseFloat($('.unit_price_d').text()); //span 
  var price_d = (price).toFixed(2);
  console.log(price_d);
  $('.unit_price_d').text(price_d);

3 个答案:

答案 0 :(得分:3)

您可以为.text()方法提供函数。它接收每个所选元素的旧文本内容作为参数,返回值替换它。

$('.unit_price_d').text(function(i, oldtext) {
    return parseFloat(oldtext).toFixed(2);
});

答案 1 :(得分:1)

好的,好问题!

var price = 0
$('.unit_price_d').each(function(){
    price_d = parseFloat($(this).text()).toFixed(2); //span 
    console.log(price_d);
    $(this).text(price_d)
})

注意两件事。使用*.each()**this*关键字进行迭代, 代码上!

答案 2 :(得分:0)

您应该循环访问DOM元素并为每个特定元素文本应用toFixed()。像:

var price = 0
$('.unit_price_d').each(function() {
  price = parseFloat($(this).text()).toFixed(2)
  $(this).text(price)
})

尽管如此,我建议您在span上使用数据属性更清晰,并在标记中保留这两个值:<span data-price="1.23"></span>

最后,如果您正在开始使用JS,那么您应该考虑在没有jQuery的情况下尝试编写代码,以便更好地理解DOM操作(以及全局JS)。