parseFloat用于具有相同类的多个条目

parseFloat for multiple entries with the same class

本文关键字:同类 用于 parseFloat      更新时间:2023-09-26

我有一个类别页面,在那里我可以显示不同的产品。在每个产品中,我都有一个部分显示以前的价格保存价格价格。只是为了说明Was Price:的结构

<p class="old-price">
    <span class="price-label">Was</span>
    <span class="price" id="old-price-65848">
        <span class="price">
            <span class="currency">£</span>
        </span> 
    </span>
</p>

目前在使用jQuery的产品页面上,我可以获得was价格并将其转换为数字:

var oldPrice = parseFloat(jQuery('.old-price .price .price').first().text().replace(/[^0-9'.]+/g, ""), 10);

在产品页面上,这一切都很好,您只有一个Was-Price块。然而,当我进入类别页面时,我有多个块使用相同的结构和相同的类,上面的代码只选择第一个块,忽略其余的。这可以很容易地显示使用:

console.log(oldPrice, "%");

我如何修改代码,使其能够获取类别页面上的所有Was Price

编辑:

我已经设法使用下面的代码映射了旧的价格和节省价格。然而,我正在尝试执行数学函数,条件是:

var oldPrices = jQuery('.old-price .price .price').map(function(){
    return parseFloat(jQuery(this).text().replace(/[^0-9'.]+/g, ""), 10);

}).get();

var specialPrices = jQuery('.special-price .price .price').map(function() {
    return parseFloat(jQuery(this).text().replace(/[^0-9'.]+/g, ""), 10);

}).get();

var youSave = specialPrices / (oldPrices / 100);

不幸的是,它返回NaN值

附言:所有价格都是动态生成的。

感谢

您可以映射它以获得一个数组:

var oldPrices = jQuery('.old-price .price .price').map(function(){
    return parseFloat($(this).text().replace(/[^0-9'.]+/g, ""), 10);
}).get();
console.log(oldPrices);

也就是说,您最好设置一个data-*属性来处理特定于每个元素的旧价格,例如:<p class="old-price" data-old-price="12345">

顺便说一句,你的代码段似乎与你发布的HTML标记无关,除了ID属性之外,没有旧的价格值可以检索。