简体   繁体   中英

Why the .toFixed(2) is not working in this case

I need to display the values with two decimal format .

When displaying values why the toFixed function is not working in this case

I am getting the following error under browser console

Uncaught TypeError: tax_value.toFixed is not a function

This is my code

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/

Could anybody please let me know how to display with two decimal points in this case

Strings don't have a toFixed method and when you call that, tax_value is still a string.

For some reason your JSON data has all the numbers encoded as strings ( "3" vs 3 ). This isn't really correct, so you should get the services to just return simple numbers.

If you need to force a string into becoming a number, you should use parseInt or parseFloat . Your code would change to:

tax_value = parseFloat(tax_value).toFixed(2);

In your current code, using the typeof operator just before the line with toFixed will show you the type of tax_value at that time. In your example, it shows "string" (and typeof "".toFixed === 'undefined' , proving the method doesn't exist).

Please see this I have changed string value to number

var orderjson = 
    {
        "display": {
            "ServiceCharge": 1,
            "ServiceTax": 2,
            "order": [
                "ServiceCharge",
                "ServiceTax",
                "VAT",
                "DISCOUNT"

            ],
            "VAT": 3,
            "OTH1": 4,
            "DISCOUNT": 5
        }
    }

Js Fiddle:

http://jsfiddle.net/2kbet2hL/10/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM