当前位置: 首页 > 知识库问答 >
问题:

在产品列表页面上计算多个产品的折扣百分比

昝卓
2023-03-14

嗨,我正在尝试计算的百分比折扣的产品,在一个产品列表页上出售,有一个过去和现在的价格。

我已经有了用来获得百分比折扣的代码,但我似乎不能让它对每个产品动态地工作。目前,它将运行计算,然后打印每个产品的相同百分比折扣,即使是全价产品。

对此,我们将不胜感激。谢谢!

null

setTimeout(function discountPrice() {
  $('.product-slab__price').each(function() {
    var pattern = /[^0-9\.]/g;
    var wasPrice = parseFloat($(".product-price__primary .product-price__was").text().replace(pattern, "")) / 100;
    var newPrice = parseFloat($(".product-price__primary .product-price__value--discounted").text().replace(pattern, "") / 100);
    var subtractPrice = (Math.abs(wasPrice - newPrice));
    var dividePrice = (Math.abs(subtractPrice / wasPrice));
    var multiplyPrice = (Math.abs(dividePrice * 100));
    $('.discountPercentage').html(multiplyPrice.toFixed(0) + "&#37");
  });
}, 500);
.product-price__was {
  text-decoration: line-through;
}

.product-price__value.product-price__value--discounted {
  color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="product-slab__price">
  <div class="product-price__primary">
    <span class="product-price__was">Was &euro;10,00</span>
    <span class="product-price__value product-price__value--discounted">Now &euro;8,00</span>
    <span class="discountPercentage" > </span>
  </div>
</div>

<div class="product-slab__price">
  <div class="product-price__primary">
    <span class="product-price__was">&euro;15,00</span>
    <span class="product-price__value product-price__value--discounted">&euro;10,00</span>
    <span class="discountPercentage"></span>
  </div>
</div>


<div class="product-slab__price">
  <div class="product-price__primary">
    <span class="product-price__value">&euro;15,90</span>
    <span class="discountPercentage"></span>
  </div>
</div>

null

共有2个答案

琴修为
2023-03-14

你需要

  • 使用,this保留在当前板的范围
  • 测试MultiplePrice是一个数字
  • 移动正则表达式,因为您不需要每次都创建它

不需要

  • 在您显示的代码中通过.product-price__primary
  • ParseFloat,因为您没有添加任何位置。如果确实需要添加
  • ,可以使用一元加 +wasprice

null

const pattern = /[^0-9\.]/g,
  discountPrice = function() {
    $('.product-slab__price').each(function() {
      const wasPrice = $(".product-price__was", this).text().replace(pattern, "") / 100,
        newPrice = $(".product-price__value--discounted", this).text().replace(pattern, "") / 100,
        subtractPrice = Math.abs(wasPrice - newPrice),
        dividePrice = Math.abs(subtractPrice / wasPrice),
        multiplyPrice = Math.abs(dividePrice * 100);

      if (!isNaN(multiplyPrice)) $('.discountPercentage', this).html(multiplyPrice.toFixed(0) + "&#37");
    });
  };

setTimeout(discountPrice, 500);
.product-price__was {
  text-decoration: line-through;
}

.product-price__value.product-price__value--discounted {
  color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="product-slab__price">
  <div class="product-price__primary">
    <span class="product-price__was">Was &euro;10,00</span>
    <span class="product-price__value product-price__value--discounted">Now &euro;8,00</span>
    <span class="discountPercentage"> </span>
  </div>
</div>

<div class="product-slab__price">
  <div class="product-price__primary">
    <span class="product-price__was">&euro;15,00</span>
    <span class="product-price__value product-price__value--discounted">&euro;10,00</span>
    <span class="discountPercentage"></span>
  </div>
</div>


<div class="product-slab__price">
  <div class="product-price__primary">
    <span class="product-price__value">&euro;15,90</span>
    <span class="discountPercentage"></span>
  </div>
</div>
卫成和
2023-03-14

这个问题是因为在循环中迭代时使用这些类来选择DOM中的所有元素。

相反,您需要在迭代中以与当前.product-Slab__price相关的类为目标元素。为此,请使用this关键字和find()方法:

null

setTimeout(function discountPrice() {
  var pattern = /[^0-9\.]/g;

  $('.product-slab__price:has(.product-price__value--discounted)').each(function() {
    let $slab = $(this);
    var wasPrice = parseFloat($slab.find(".product-price__primary .product-price__was").text().replace(pattern, "")) / 100;
    var newPrice = parseFloat($slab.find(".product-price__primary .product-price__value--discounted").text().replace(pattern, "") / 100);

    var subtractPrice = Math.abs(wasPrice - newPrice);
    var dividePrice = Math.abs(subtractPrice / wasPrice);
    var multiplyPrice = Math.abs(dividePrice * 100);
    
    $slab.find('.discountPercentage').html(multiplyPrice.toFixed(0) + "&#37");
  });
}, 500);
css lang-css prettyprint-override">.product-price__was {
  text-decoration: line-through;
}

.product-price__value.product-price__value--discounted {
  color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="product-slab__price">
  <div class="product-price__primary">
    <span class="product-price__was">Was &euro;10,00</span>
    <span class="product-price__value product-price__value--discounted">Now &euro;8,00</span>
    <span class="discountPercentage"> </span>
  </div>
</div>

<div class="product-slab__price">
  <div class="product-price__primary">
    <span class="product-price__was">&euro;15,00</span>
    <span class="product-price__value product-price__value--discounted">&euro;10,00</span>
    <span class="discountPercentage"></span>
  </div>
</div>


<div class="product-slab__price">
  <div class="product-price__primary">
    <span class="product-price__value">&euro;15,90</span>
    <span class="discountPercentage"></span>
  </div>
</div>
 类似资料:
  • 使用最新版本的Woocommerce中的Mystile主题,我覆盖了variation.php以显示根据数量和选择的变化而定的折扣价格。我有3个属性:“marquage”,“couleurs”和“couleursàmarquer”。 这是我的php,添加在woocommerce_before_add_to_cart_form之后。 好吧,这很管用。这些行允许我捕获变量中的变化价格,目前仅限于Cou

  • 问题内容: 我在主题中有此代码以显示价格后的百分比,并且在WooCommerce v2.6.14中运行良好。 但是此代码段在WooCommerce 3.0+版本上不再起作用。 我该如何解决? 这是该代码: 问题答案: 更新 -2019 (避免四舍五入的价格问题) -2017 (避免百分比值) 在WooCommerce 3.0+中,该钩子已替换为另一个钩子,该钩子现在具有3个参数(但不再有该 参数)

  • 一面(45min) 1.自我介绍 2.实习经历深挖;介绍一下实习做的最好的项目 3.介绍工作职责和负责的项目;公共资源布局评价方案的设计,如何从时间、服务两个维度对资源布局完成量化评价 4.数据科学专业都学什么课程 5.对深度学习有什么了解 6.case题:一个图片审核的商业化产品,如何给企业定价 7.对云计算有什么了解,IAAS,PAAS,SAAS有什么异同? 8.C端和B端的差别,未来倾向于做

  • 我在桌子设计方面没有太多的经验。我的目标是创建一个或多个满足以下要求的产品表: > 支持多种产品(电视、电话、PC、...)。每种产品都有一组不同的参数,例如: > 手机将有颜色、大小、重量、操作系统... PC将有CPU、HDD、RAM... 参数集必须是动态的。您可以添加或编辑任何您喜欢的参数。 如果每种产品没有单独的表,我怎么能满足这些要求呢?

  • 我有两张桌子。一个ID及其价格表和第二个每个ID折扣表。在折扣表中,一个Id可以有很多折扣,我需要知道一个Id的最终价格。 查询它的最佳方式是什么(在一次查询中)?对于每个id的许多折扣,查询应该是通用的(不仅仅是下面示例中提到的2个) 例如表1 表二 最终结果:

  • 3.4 产品列表 3.4.1 描述 通过调用该接口为指定订单号的订单明细 3.4.2 请求地址 地址:https://api.bokecs.com/recharge/productList?pageSize=10&pageNum=3 3.4.3 请求方式 GET 3.4.4 请求参数 1) 请求入参 元素名称 是否必须 元素描述 pageNum 否 默认为1 pageSize 否 默认10 2)