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

时间:2015-11-03 10:03:58

标签: javascript jquery html5

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

<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的产品页面上,我可以获得价格并将其转换为数字:

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

这一切都在产品页面上运行正常,您只有一个价格块。然而,当我进入类别页面时,我有多个块使用相同的结构和相同的类,上面的代码只选取第一个块而忽略其余的块。这可以通过以下方式轻松显示:

console.log(oldPrice, "%");

如何修改代码以便它会在类别页面上选取所有Was Price

编辑:

我已设法使用波纹管代码映射旧价格和保存价格。但是我试图在条件为:

的情况下执行数学函数
var oldPrices = jQuery('.old-price .price .price').map(function(){
    return parseFloat(jQuery(this).text().replace(/[^0-9\.]+/g, ""), 10);

})得到();

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

})得到();

var youSave = specialPrices / (oldPrices / 100);

不幸的是它返回NaN值

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

由于

1 个答案:

答案 0 :(得分:2)

您可以映射它以获取数组:

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属性之外,没有旧的价格值可以检索。