2011-09-05 93 views
0

我有三个变量我试图总结这些值。对于这些项目中的两个,我需要表单值以不同的方式读取,因此我创建了一个属性cost来降低成本。我的代码是:一起添加变量返回字符串而不是数字

var opt1 = parseFloat($('#ac1 option:selected').attr('cost')).toFixed(2); 
var opt2 = parseFloat($('#ac2 option:selected').attr('cost')).toFixed(2); 
var base = parseFloat($('#original_price').val()); 
var newprice = opt1+opt2+base; 

如果OPT1应该是4.00,6.50 OPT2和基地10.00,它给我的4.006.5010.00代替20.50

任何想法在我要去哪里错了输出?

+4

'toFixed'返回一个字符串(所以'opt1'和'opt2'包含字符串)和[不与财务计算浮点数](http://stackoverflow.com/questions/2876536/precise-financial-calculation-in-javascript-what-are-the-gotchas)。 –

+1

@Felix谢谢 - 我正在写一个网站的好建议。 – Bojangles

回答

2

您的toFixed方法将数字转换为字符串?一定是。尝试在整个调用中包装parseFloat。

var newprice = parseFloat(opt1)+parseFloat(opt2)+base; 

另外,尝试测试,如果OPT1和OPT2都是字符串

console.log(typeof opt1 === 'string'); 
+1

是的,那是做到了。我的JavaScript仍然有点粗糙。还没有完全赞赏如何固定工作。非常感谢! – TH1981

相关问题