我正在尝试获取属性值的总和。该值是货币总和,例如。$29.99
,或文本字符串,例如。sold
.
我正在使用以下代码,我确定这是不正确的。我得到一个返回值NaN
,我知道这意味着“不是数字”。我有一种感觉,我可能没有正确删除文本字符串、美元符号、逗号或全部三个。
非常感谢提供适当解决方案的任何帮助。谢谢。
var total = parseFloat($('span.buyoffer').attr('data-price').replace(/[A-Za-z$-]/g, ""));
我正在尝试获取属性值的总和。该值是货币总和,例如。$29.99
,或文本字符串,例如。sold
.
我正在使用以下代码,我确定这是不正确的。我得到一个返回值NaN
,我知道这意味着“不是数字”。我有一种感觉,我可能没有正确删除文本字符串、美元符号、逗号或全部三个。
非常感谢提供适当解决方案的任何帮助。谢谢。
var total = parseFloat($('span.buyoffer').attr('data-price').replace(/[A-Za-z$-]/g, ""));
var total;
$.each($('span.buyoffer'), function(i,v) {
var val = $(v).attr('data-price');
if ($.isNumeric(val)) {
total = total + val
}
});
//here you will have the total value
parseFloat('')
返回 NaN - 您必须先将空字符串转换为数字。最简单的方法是从中减去0
:
var total = parseFloat(($('span.buyoffer').attr('data-price').replace(/[A-Za-z$-]/g, "")) - 0);
@Rory McCrossan 也是正确的,使用.data()
是首选,所以:
var total = parseFloat(($('span.buyoffer').data('price').replace(/[A-Za-z$-]/g, "")) - 0);
但是,仅当您只有一个<span class="buyoffer">
元素时,这仍然有效。要计算所有匹配元素的总数,您需要遍历每个元素:
var total = 0;
$('span.buyoffer').each(function(index, element) {
total += $(element).data('price').replace(/[A-Za-z$-]/g, "") - 0;
});
var sum = 0;
$("span.buyoffer").each(function() {
var price = +($(this).attr("data-price").replace(/[^\d\.]/g, ""));
sum += price;
});