首页 > 解决方案 > 计算两个“”之间的字符串(数字),并将其替换为值的一半

问题描述

我有这个html:

<span class="woocommerce-Price-amount amount">
  <span class="woocommerce-Price-currencySymbol">₪&lt;/span>
  13.9
</span>

我想显示一半的价格,例如在这种情况下为 13.9 的一半(代码在页面中出现多次,每次不同的金额)。

我试过这个来捕获引号内的字符串:

var str = $(".tax-product_cat.term-185 .woocommerce-Price-amount").html();
var newStr = str.split("</span>")[1].split("</span>")[0];
var halfprice = parseInt(newStr, 10) / 2;
$(".tax-product_cat.term-185 .woocommerce-Price-amount").html("<span class='woocommerce-Price-amount amount'><span class='woocommerce-Price-currencySymbol'>₪&lt;/span>"+halfprice+"</span>");

但并没有真正起作用。

有任何想法吗?谢谢!

标签: javascriptjquery

解决方案


获取 之后的文本元素woocommerce-Price-currencySymbol,并操作其textContent. 不幸的是,您不能':last-child对文本节点使用选择器,因此这是下一个最佳方法。

const elements = document.querySelectorAll('.woocommerce-Price-currencySymbol')

for (let i = 0; i < elements.length; i++) {
  const textNode = elements[i].nextSibling
  textNode.textContent = parseFloat(textNode.textContent) / 2
}
<span class="woocommerce-Price-amount amount">
  <span class="woocommerce-Price-currencySymbol">₪&lt;/span> 13.9
</span>

<span class="woocommerce-Price-amount amount">
  <span class="woocommerce-Price-currencySymbol">₪&lt;/span> 14.9
</span>

<span class="woocommerce-Price-amount amount">
  <span class="woocommerce-Price-currencySymbol">₪&lt;/span> 15.9
</span>


推荐阅读