2017-03-17 81 views
1

上一些JavaScript我继承工作,不明白这一个:的replaceAll在JavaScript是返回了错误的号码

fa = parseFloat(replaceAll($("#face_amount").val(),',','')) 

face_amount为999,999(或任意数量的一个逗号)fa = 999999但当face_amount是1,000,000时fa = 1000

face_amount需要用于显示目的的格式化逗号。

我很新的JavaScript,所以任何帮助将不胜感激。

+3

我们需要看看你的'replaceAll'函数。 – Adam

+0

感谢您的答案!我是这样一个noob我没有意识到'replaceAll'不是一个JavaScript函数,而是一个自定义函数。 – user3850146

回答

1

不知道replaceAll在做什么,我无法真正修复该行代码,但可以尝试使用不同的替换函数。

fa = parseFloat($("#face_amount").val().replace(/,/g,'')) // This works, returns 1000000 

我怀疑问题是你的replaceAll函数全局不匹配逗号。下面的代码行只能找到第一个逗号,然后停在那里。代码行使用全局正则表达式查找所有逗号。

fa = parseFloat($("#face_amount").val().replace(',','')) // This doesn't work, returns 1000 
0

如果你的目标是消除任何非数字或.值,可以前你parseFloat使用一个简单的正则表达式:

var floater = parseFloat($("#face_amount").val().replace(/[^\d\.]+/g, '')) 
+0

您可以使用'\ D'匹配所有非数字字符,而不是'[^ \ d]' – Adam

+0

这是'parseInt函数()',有一​​个基数,'parseFloat()'没有一个。 – zer00ne

+0

@ zer00ne derp!非常感谢你,更新了我的答案。 –

0

对我的作品,但我包括我的replaceAll代码:

function replaceAll(str,from,to){ 
 
    var re = new RegExp(from,"g"); 
 
    return str.replace(re,to); 
 
} 
 

 

 
var face_amount = '999,999'; 
 
var fa = parseFloat(replaceAll(face_amount,',','')); 
 
console.log(face_amount,': ',fa); 
 

 
face_amount = '1,000,000'; 
 
fa = parseFloat(replaceAll(face_amount,',','')); 
 
console.log(face_amount,': ',fa);