如何用逗号计算金额

时间:2019-05-15 11:40:49

标签: javascript jquery

我有一款商品的价格为1,500.85,我想将其乘以使用javascript输入的数量。但是,因为金额超过一千,所以会有一个逗号,并且由于该逗号,结果显示为“ NaN” ..我如何用逗号来计算金额?

注意:如果金额少于一千,则可以使用。

// Calculation script START
$(document).ready(function() {
  CalculateTotalPrice();
});

document.getElementsByClassName("input-text qty text")[0].onkeyup = function() {CalculateTotalPrice()};
$(select).onchange(function() {
  CalculateTotalPrice();
});


function CalculateTotalPrice() {
setTimeout(function(){
  
var price = document.querySelector(".price .woocommerce-Price-amount.amount").innerText;
var quantity = document.getElementsByClassName("input-text qty text")[0].value;

var total = price * quantity;
var totalOnly2Decimal = total.toFixed(2);

document.getElementById("result").innerHTML = "DKK " + totalOnly2Decimal + " inkl. moms"; 
}, 100);
}
// Calculation script END
<!-- Price -->
<div class="elementor-widget-container">
<p class="price">Fra: 
<span class="woocommerce-Price-amount amount">
<span class="woocommerce-Price-currencySymbol"></span>1,122.50
</span> kr. inkl. moms</p>
</div>

<!-- Quantity field -->
<div class="quantity"> 
<label class="screen-reader-text" for="quantity_5cd3fab7bb0d7"></label> 
<input type="number" id="quantity_5cd3fab7bb0d7" class="input-text qty text" step="1" min="1" max="" name="quantity" value="1" title="Stk." size="4" inputmode="">

<!-- Result -->
<h3 style="font-size: 17px; font-weight:bold; display:inline; text-transform:uppercase;">Total:</h3>
<p class="result" id="result" style="display:inline;"></p>

4 个答案:

答案 0 :(得分:1)

使用String.prototype.replace替换所有逗号,然后相乘。

let price = '1,500.85';
let quantity = '7';

let total = price.trim().replace(/,/g, '') * quantity;
console.log(total)

答案 1 :(得分:1)

您可以使用String对象上的replace方法删除逗号并将其转换为整数

price = parseInt(price.replace(/,/g,''))
var total = price * quantity;

答案 2 :(得分:0)

将此行更改为以下

var price = 
document.querySelector(".price .woocommerce-Price-amount.amount").innerText.split(",").join("");

// Calculation script START
$(document).ready(function() {
  CalculateTotalPrice();
});

document.getElementsByClassName("input-text qty text")[0].onkeyup = function() {
  CalculateTotalPrice()
};



function CalculateTotalPrice() {
  setTimeout(function() {

    var price = document.querySelector(".price .woocommerce-Price-amount.amount").innerText.split(",").join("");
    var quantity = document.getElementsByClassName("input-text qty text")[0].value;

    var total = price * quantity;
    var totalOnly2Decimal = total.toFixed(2);

    document.getElementById("result").innerHTML = "DKK " + totalOnly2Decimal + " inkl. moms";
  }, 100);
}
// Calculation script END
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Price -->
<div class="elementor-widget-container">
  <p class="price">Fra:
    <span class="woocommerce-Price-amount amount">
<span class="woocommerce-Price-currencySymbol"></span>1,122.50
    </span> kr. inkl. moms</p>
</div>

<!-- Quantity field -->
<div class="quantity">
  <label class="screen-reader-text" for="quantity_5cd3fab7bb0d7"></label>
  <input type="number" id="quantity_5cd3fab7bb0d7" class="input-text qty text" step="1" min="1" max="" name="quantity" value="1" title="Stk." size="4" inputmode="">

  <!-- Result -->
  <h3 style="font-size: 17px; font-weight:bold; display:inline; text-transform:uppercase;">Total:</h3>
  <p class="result" id="result" style="display:inline;"></p>
  <script>
  </script>

答案 3 :(得分:0)

您的代码段似乎存在一些错误,我已尽力修复以下问题。要回答您的问题,有两个要点:

  1. var priceAsFloat = parseFloat(price.replace(/,/g, ''));

从价格中删除逗号,然后在进行任何数学运算之前将其转换为浮点数

  1. var result = totalOnly2Decimal.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')

将结果转换回字符串,然后使用上面的正则表达式将逗号放回所需的位置。

工作示例:

// Calculation script START
$(document).ready(function() {
  CalculateTotalPrice();
});

document.getElementsByClassName("input-text qty text")[0].onkeyup = function() {CalculateTotalPrice()};
$("input").change(function() {
  CalculateTotalPrice();
});


function CalculateTotalPrice() {
setTimeout(function(){
  
var price = document.querySelector(".price .woocommerce-Price-amount.amount").innerText;
var priceWithoutCommas = price.replace(/,/g, '');
var quantity = document.getElementsByClassName("input-text qty text")[0].value;

var total = priceWithoutCommas * quantity;
var totalOnly2Decimal = total.toFixed(2);

var result = totalOnly2Decimal.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')

document.getElementById("result").innerHTML = "DKK " + result + " inkl. moms"; 
}, 100);
}
// Calculation script END
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!-- Price -->
<div class="elementor-widget-container">
<p class="price">Fra: 
<span class="woocommerce-Price-amount amount">
<span class="woocommerce-Price-currencySymbol"></span>1,122.50
</span> kr. inkl. moms</p>
</div>

<!-- Quantity field -->
<div class="quantity"> 
<label class="screen-reader-text" for="quantity_5cd3fab7bb0d7"></label> 
<input type="number" id="quantity_5cd3fab7bb0d7" class="input-text qty text" step="1" min="1" max="" name="quantity" value="1" title="Stk." size="4" inputmode="">

<!-- Result -->
<h3 style="font-size: 17px; font-weight:bold; display:inline; text-transform:uppercase;">Total:</h3>
<p class="result" id="result" style="display:inline;"></p>