0

我网站的结帐页面上有这个 html

<tr class="order-total">
    <th>Total</th>
    <td><strong><span class="woocommerce-Price-amount amount">
        <span class="woocommerce-Price-currencySymbol">$</span>24,500.00</span></strong> 
    </td>
</tr>

我必须将此价格(24,500)乘以 0.0198 并将其显示在另一个部分的同一页面上的 div 一侧。这是我尝试过的:

jQuery('.woocommerce-Price-amount.amount').load(function () {
  var totprice = jQuery('.woocommerce-Price-amount.amount').val();
  var leaseprice = totprice * 0.0198;
  jQuery(".leaseprice_container").append(leaseprice);    
});

我试图显示leaseprice的部分有这个html:

<div class="leaseprice_container">
    <p><strong>Prices are in USD.</strong></p>
</div>
4

4 回答 4

1

html 元素上没有 .load 。一个人会使用

$("selector").load("url",function() {...})

从后端加载数据

跨度没有 .val()

试试这个

var formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
});

const totprice = $('.woocommerce-Price-amount').text().replace(/(\$|,)/g, "");

const leaseprice = totprice * 0.0198;

console.log(totprice,leaseprice)

$(".leaseprice_container p strong").prepend(formatter.format(leaseprice)+" ")
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<tr class="order-total">
  <th>Total</th>
  <td><strong><span class="woocommerce-Price-amount amount">
        <span class="woocommerce-Price-currencySymbol">$</span>24,500.00</span></strong>
  </td>
</tr>
<div class="leaseprice_container">
  <p><strong>Prices are in USD.</strong></p>
</div>

于 2020-08-25T13:08:14.773 回答
1
  • 您需要使用jQuery()简写为document.load.
  • 您需要获取text()跨度的,因为只有inputs值。
  • 您需要从文本中删除所有不是数字的数字,以便 Javascript 可以将其用作数字。( .replace(/[^\d.-]/g, ''))

jQuery(function() {
  var totprice = jQuery('.woocommerce-Price-amount.amount').text().replace(/[^\d.-]/g, '');;
  var leaseprice = totprice * 0.0198;
  jQuery(".leaseprice_container").append(leaseprice);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<tr class="order-total">
  <th>Total</th>
  <td><strong><span class="woocommerce-Price-amount amount">
        <span class="woocommerce-Price-currencySymbol">$</span>24,500.00</span></strong>
  </td>
</tr>

<div class="leaseprice_container">
  <p><strong>Prices are in USD.</strong></p>
</div>

于 2020-08-25T13:09:46.480 回答
1

我使用正则表达式删除所有非数字字符,然后以整数进行所有计算,然后返回真正的十进制基数,以避免舍入错误。

var price = Number.parseInt($('.woocommerce-Price-amount.amount').text().replace(/[\D]/g, ''));
var leaseprice = price * 198 / 1000000;
$(".leaseprice_container .price").text(leaseprice);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<tr class="order-total">
    <th>Total</th>
    <td><strong><span class="woocommerce-Price-amount amount">
        <span class="woocommerce-Price-currencySymbol">$</span>24,500.00</span></strong> 
    </td>
</tr>

<div class="leaseprice_container">
    <span class="woocommerce-Price-currencySymbol">$</span><span class="price"></span>
    <p><strong>Prices are in USD.</strong></p>
</div>

于 2020-08-25T13:23:06.667 回答
1

您可以使用text()and not来获取值val(),它用于输入元素,您可以修剪它并用$空字符替换符号和逗号,以获得正确的浮点数格式以便使其parseFloat()工作。然后你可以把结果放在你想要的部分:

$(document).ready(function(){
    var totprice = parseFloat($(".woocommerce-Price-amount.amount")
                               .text()
                               .trim()
                               .replace('$','')
                               .replace(',',''));
    var leaseprice = totprice * 0.0198;
    $(".leaseprice_container strong").text(leaseprice);
}); 
于 2020-08-25T13:34:27.247 回答