2011-12-28 149 views
4

我在html中有以下标记我不希望$被采取,因为我只是想要计算价格的目的。将货币格式转换为数字

<span id="testspan">$101.82</span> 

在上面的span标记中我想只计算101.82的值。

我使用的HTML()来获取值

var csqft_price = $('#testspan').html(); 
var price= parseFloat(csqft_price); 

,但我用$得到它,所以我不能做我的计算如何能做到这一点。

+0

您能否影响您显示的HTML的生成方式? – 2011-12-28 10:11:02

+0

注意:这不是一个真正的jQuery问题 - 您可能想重新编写为JavaScript。 – nnnnnn 2011-12-28 10:19:09

回答

0

尝试使用JavaScript的“替换”功能替换$符号,并用空值代替$符号,就像这样:

var vsqft_price = $('#testspan').html(); 
var vsqft_float = vsqft_price.replace("$", ""); 
var price= parseFloat(csqft_float); 
+0

不够灵活。只是为美元工作,并没有尊重任何其他可能的字符(如空格) – Armin 2011-12-28 10:19:54

+0

@Armin - 这回答问题的问题,在哪里格式似乎已知(并没有空格)。 – nnnnnn 2011-12-28 10:21:17

+0

是的,但其他解决方案(通过regexp)也符合您的要求,并且是一种更加灵活的解决方法!读过这个的其他用户应该知道这个事实。 – Armin 2011-12-28 10:25:01

3

以下测试的第一个字符是一个美元符号和如果是这样取字符串的其余部分:

var csqft_price = $('#testspan').html(); 
var price = +(csqft_price.charAt(0)==="$" ? csqft_price.substr(1) : csqft_price); 

当然,如果你知道会有总是是一个美元符号,你可以只是这样做:

var price = +csqft_price.substr(1); 

注意:我通常更喜欢unary plus operator将字符串转换为数字,因此我在上面的答案中使用了该字符串 - 如果您愿意,可以将+(...)更改为parseFloat(...)

+0

谢谢。它帮助了我。 – user818671 2011-12-28 10:17:38

+0

+1为一元运算符。 – moey 2011-12-28 10:18:28

+0

问题中的样本数量没有进入数千,但如果您可能有一个格式为“$ 12,000.01”的数字(即,带逗号),那么我建议使用'.replace()',就像在Hemant's回答(删除除数字和全站位以外的所有字符)。 – nnnnnn 2011-12-28 10:23:39

1

我将取代所有非digets和点什么也没有做出比parseFloat:

var textValue = '$101.82'; 
var floatedValue = parseFloat(textValue.replace(/[^\d\.]/, '')); 
alert(floatedValue); 

例子:http://jsfiddle.net/MEY9R/

+1

请注意,如果加拿大/美国(在其他国家/地区)普遍存在逗号,则此操作将失败EG:1,101.82,http://jsfiddle.net/nathankoop/ MEY9R/1 / – 2012-11-01 19:44:52

0

使用这个

var csqft_price = $('#testspan').html(); 
var price=parseFloat(csqft_price.replace('$','')); 
alert(price); 

并使用价格进行计算。

0

ku4js-kernel对此有一个甜美的$ .money类。你可以只需$ .money.parse(“$ 101.82”),然后做你想做的。

你可以获得价值()并用作一个数字,甚至更好,只要保持钱和做你的操作。您可以查看文档here