在我的WooCommerce网站上,访问者可以将附加组件添加到价格昂贵的产品中。
我正在尝试根据所选的添加项来更新产品页面上显示的价格。
我可以使其部分工作,但是现在我陷入了困境...在我的代码中,计算有效,但我也不知道如何使用小数进行计算。 (例如:1.550,50 + 50 = 1.550,50)
jQuery(document).ready(function ($) {
var prijs = $('.price .amount').text().replace('€', '').replace(',', '');
$('.product-addon input').change(function(){
var x = $(this).closest('input:checked').value;
var total = prijs + x;
$('.price .amount').text(total);
});
});
这是html查找价格字段和单选按钮的方式:
<p class="price"><span class="woocommerce-Price-amount amount"><span class="woocommerce-Price-currencySymbol">€</span>1,500.00</span></p>
<input type="radio" class="addon addon-radio" name="addon-401-kleur-0[]" data-raw-price="50" data-price="50" value="rood">
价格从“€1,500.00”更新为“ 150050”。而不是预期的1550。
另一件事..如何将数字格式化为小数点和欧元符号再次在前面?如果可以,我的基本代码将输出“ 1550”,但我希望将其输出为“€1.550,00”。
希望有人可以鸣叫;)
答案 0 :(得分:0)
您正在将string
而不是float
一起添加。 jQuery
返回的值是string
(jQuery text() method),因此被串联起来而不是作为数字加在一起。
看看parseFloat。
尝试执行以下操作:
var prijs = parseFloat(...)
和
var x = parseFloat(...)
然后在您的var total = prijs + x
中,将两个数字相加,这就是您想要的。
关于格式化数字的方法,请查看toLocaleString。
例如:
(1550).toLocaleString('en-GB', {style: 'currency', currency: 'GBP', minimumFractionDigits: 2}).replace('£', '€');
给出:
€1,550.00