2011-03-30 109 views
1

林试图圆了几个变量为2位小数,但我有问题四舍五入JavaScript变量

当我刚刚totalprice变量它的工作原理发现使用toFixed()(显然航运犯规轮),但是当我有它像下面(.toFixed航运VAR)JavaScript控制台给了我这个错误:

Uncaught TypeError: Object 219.863.80 has no method 'toFixed' 
updatePriceshg-buy.html:398 
(anonymous function)hg-buy.html:436 
onchangehg 

219.86是价格的价值,63.80是出货的价格,所以它看起来就像是串联,但我不能工作如何要解决这个问题。

在此先感谢

下面的代码

function updatePrices() { 
var price = $('select_1').getValue(); 
var shipping = $('shippingValue').getValue(); 
var quantity = $('select_3').getValue(); 
var totalshipping = (shipping * quantity).toFixed(2); 

var totalprice = ((price * quantity)+(totalshipping)).toFixed(2); 

$('unitprice').setText(price); 
$('shipping').setText(totalshipping); 
$('totalprice').setText(totalprice); 
} 
+0

我以前一直摔倒在路上。基于DOM价值和金钱做一个连贯的购物篮不是一个好主意,它不会很好地扩展。你每做一次重新设计=休息。引入新的货币=突破。引入优惠券=休息。介绍碳抵消=突破。试着将你的购物篮逻辑从它的可视化表示中分离出来,并用一些方法构建一个小类:'getBasket'(读取cookie或会话数据并将它们存储为本地对象/数字),'addToBasket','removeFromBasket','updateBasket'最后,'outputBasket'将它导出回DOM /或表单元素。 – 2011-03-30 11:10:54

+0

另一件你不想做的事就是将客户端计算的值传递给你的服务器。通过id参考。产品ID - > db查找 - >价格。运输方式的ID - >成本。例如失败的结账说,freeparking.co.uk域更新通常是2年或更长时间,由下拉没有定义。多年。使用萤火虫更改下拉值,您只能续订您的网域1年。 – 2011-03-30 13:31:05

回答

3

尝试:

var totalshipping = (parseFloat(shipping) * parseFloat(quantity)).toFixed(2); 
+0

经典的错误:'getValue'返回一个字符串,而不是一个数字。 '+'连接两个字符串:''string'+'string'='stringstring';'... – Martijn 2011-03-30 10:30:46

0

我建议使用一些库妥善处理十进制值,否则你可能会在这里失去一些美分那里。 (当然这只有在你关心那些美分时才有必要。)

你可以看看this question