计算两个“”之间的字符串(数字),并将其替换为一半的值

时间:2018-09-14 14:00:49

标签: javascript jquery

我有这个html:

<span class="woocommerce-Price-amount amount">
  <span class="woocommerce-Price-currencySymbol">₪</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'>₪</span>"+halfprice+"</span>");

但是并没有真正起作用。

有什么想法吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

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">₪</span> 13.9
</span>

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

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

答案 1 :(得分:1)

获取符号字符串,使用jQuery text()方法,并将其用作根跨度整个文本内容中的分割定界符。

$(".woocommerce-Price-amount").each(function(){
  var symbol = $(this).find(".woocommerce-Price-currencySymbol").text();
  var half = $(this).text().split(symbol)[1] / 2;
  console.log(half);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<span class="woocommerce-Price-amount amount">
  <span class="woocommerce-Price-currencySymbol">₪</span> 13.9
</span>

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

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