[英]Why the .toFixed(2) is not working in this case
我需要用两个十进制格式显示值。
当显示值时,为什么在这种情况下toFixed函数不起作用
我在浏览器控制台下收到以下错误
未捕获的TypeError:tax_value.toFixed不是函数
这是我的代码
var orderjson =
{
"display": {
"ServiceCharge": "1",
"ServiceTax": "2",
"order": [
"ServiceCharge",
"ServiceTax",
"VAT",
"DISCOUNT"
],
"VAT": "3",
"OTH1": "4",
"DISCOUNT": "5"
}
}
var orderOfDisplay = orderjson.display.order;
var ServiceCharge = orderjson.display.ServiceCharge;
var ServiceTax = orderjson.display.ServiceTax;
var VAT = orderjson.display.VAT;
var OTH1 = orderjson.display.OTH1;
var DISCOUNT = orderjson.display.DISCOUNT;
var htmldata = '';
for(var i=0;i<orderOfDisplay.length;i++)
{
var tax_value = orderjson.display[orderOfDisplay[i]];
tax_value = tax_value.toFixed(2);
htmldata+= '<tr><td align="right" valign="middle" width="50%">'+orderOfDisplay[i]+'</td> \
<td align="right" valign="middle" width="50%">Rs. '+tax_value+'</td> \
</tr>';
}
$("#tableid").append(htmldata);
http://jsfiddle.net/2kbet2hL/9/
在这种情况下,有人可以让我知道如何显示两位小数吗?
字符串没有toFixed
方法,当您调用它时, tax_value
仍然是字符串。
出于某种原因,您的JSON数据将所有数字编码为字符串( "3"
对3
)。 这不是真的正确,因此您应该使服务仅返回简单数字。
如果需要强制将字符串变成数字,则应使用parseInt
或parseFloat
。 您的代码将更改为:
tax_value = parseFloat(tax_value).toFixed(2);
在您当前的代码中,在toFixed
行之前使用typeof
运算符将显示tax_value
类型。 在您的示例中,它显示"string"
(和typeof "".toFixed === 'undefined'
,证明该方法不存在)。
请参阅此内容,我已将字符串值更改为数字
var orderjson =
{
"display": {
"ServiceCharge": 1,
"ServiceTax": 2,
"order": [
"ServiceCharge",
"ServiceTax",
"VAT",
"DISCOUNT"
],
"VAT": 3,
"OTH1": 4,
"DISCOUNT": 5
}
}
Js Fiddle:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.