javascript解析浮动错误

我试图得到我的表的行总和:

td1 val = $ 5,000.00; td2 val = $ 3000.00;

我使用以下代码:

var totalnum = 0; $('.num').each(function(){ totalnum+= parseFloat($(this).html()); }); $('.total_num').html(totalnum); 

如果我从数字中删除货币格式,此代码非常有效,否则即使我使用parseFloat也会给出NaN

我错过了什么?

尝试:

 var totalnum = 0; $('.num').each(function(){ totalnum+= parseFloat($(this).html().substring(1).replace(',','')); }); $('.total_num').html('$' + totalnum); 

这将从开头和所有逗号中删除$(或任何货币符号),然后再执行parseFloat并将其放回总数中。

或者你可以使用jQuery FormatCurrency插件并执行以下操作:

 totalnum+= $(this).asNumber(); 

如果将$添加到该值,则它不再是整数,并且无法再使用。

试图将格式化的值恢复为数字是一个坏主意。 您必须满足不同的货币符号,不同的格式(例如1.000,00 )等。

最好的方法是将原始数值存储在单独的属性中。 如果使用HTML 5,您可以使用jQuery的data()

 $1.25 .... var totalnum = 0; $('.num').each(function(){ totalnum+= parseFloat($(this).data("value")); }); $('.total_num').html(totalnum); 

这样,您将格式化结果与数值分开,这样可以省去很多麻烦。

尝试删除$和不属于float类型的任何其他字符:

 var totalnum = 0; $('.num').each(function(){ var num = ($(this).html()).replace(/[^0-9\.]+/g, ""); totalnum+= parseFloat(num); }); $('.total_num').html(totalnum); 

编辑:更新replace以根据此答案删除所有非数字字符(句点除外)。