我检索了一个字符串,并使用正则表达式从中提取了一个十进制数字,例如1.00或3.99。现在我想用这些数字进行计算。如何将这些正则表达式结果转换为正确的数字,以便我可以执行计算?在下面的代码中,每次点击都应该将价格添加到之前的总数中,但它不能正确地计算数字的总和。
var SaveAfrica = {
init: function () {
this.addToBasket();
},
addToBasket: function () {
var featured = $('section.featured'),
bsktTotalSpan = $('.basket_total span.basket-qty'),
list = featured.find('ul'),
item = list.find('li');
featured.delegate('.buy-now', 'click', function (e) {
var thisElem = $(this),
qtyData = thisElem.closest('li').data('price'),
total = parseInt(bsktTotalSpan.text()) + parseFloat(qtyData.match(/[\d\.\d]+/i));
e.preventDefault();
bsktTotalSpan.text(parseFloat(total));
console.log('The total is: total);
});
}
};
SaveAfrica.init();
数字来自的HTML:
<li data-price="£2.99"><a href="#" class="buy-now"><img src="someImage.jpg" alt="some image" /></a></li>
非常感谢
答案 0 :(得分:3)
您的问题可能是.match()
返回一系列匹配项。所以你可能会尝试类似的东西:
parseFloat(qtyData.match(/[\d\.\d]+/i)[0]);
答案 1 :(得分:2)
总和是什么,如果有的话?
您可能需要尝试以下方法:
total = parseFloat(bsktTotalSpan.text()) + parseFloat(qtyData.match(/[\d\.\d]+/i));
也就是说,将解析为浮点数并将total明确定义为float。否则,小数可能会在某处被截断。
答案 2 :(得分:1)
我认为从元素中获取价格时会出现拼写错误。
代码应如下所示,
qtyData = thisElem.closest('li').data('data-price'),
答案 3 :(得分:-1)
您可以简单地将字符串乘以1,以便将其转换为数字:
num = '1.00' * 1 //result is the number 1