Why does Firebug say toFixed() is not a function?

Javascript

Javascript Problem Overview


I am using jQuery 1.7.2 and jQuery UI 1.9.1. I am using the code below within a slider. (http://jqueryui.com/slider/)

I have a function that should test two values and depending on the difference between the two values reformat them (to the appropriate decimal place). If the difference is greater than 10, I will parse out the integer. If the difference is greater than 5, it should keep one decimal. Everything else, I will keep two decimals.

When I enter two values that have a difference that is ten or less, I use the toFixed() function. And, in Firebug, I see an error:

TypeError: Low.toFixed is not a function
Low = Low.toFixed(2);

Is there something simple that I am doing wrong?

Here is my code:

var Low = $SliderValFrom.val(),
High = $SliderValTo.val();
				
// THE NUMBER IS VALID
if (isNaN(Low) == false && isNaN(High) == false) {
    Diff = High - Low;
if (Diff > 10) {
      Low = parseInt(Low);	
  High = parseInt(High);	
} else if (Diff > 5) {
       Low = Low.toFixed(1);
       High = High.toFixed(1);
} else {
       Low = Low.toFixed(2);
   High = High.toFixed(2);
}
}

Javascript Solutions


Solution 1 - Javascript

toFixed isn't a method of non-numeric variable types. In other words, Low and High can't be fixed because when you get the value of something in Javascript, it automatically is set to a string type. Using parseFloat() (or parseInt() with a radix, if it's an integer) will allow you to convert different variable types to numbers which will enable the toFixed() function to work.

var Low  = parseFloat($SliderValFrom.val()),
    High = parseFloat($SliderValTo.val());

Solution 2 - Javascript

That is because Low is a string.

.toFixed() only works with a number.


Try doing:

Low = parseFloat(Low).toFixed(..);

Solution 3 - Javascript

Low is a string.

.toFixed() only works with a number.

A simple way to overcome such problem is to use type coercion:

Low = (Low*1).toFixed(..);

The multiplication by 1 forces to code to convert the string to number and doesn't change the value.

Solution 4 - Javascript

You need convert to number type:

(+Low).toFixed(2)

Solution 5 - Javascript

parseFloat() will return NaN for empty string, why not using Number() function instead?

Values of other types can be converted to numbers using the Number() function.

parseFloat('').toFixed(2) // "NaN"
Number('').toFixed(2) // "0.00"

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number

Solution 6 - Javascript

In a function, use as

render: function (args) {
    if (args.value != 0)
        return (parseFloat(args.value).toFixed(2));


},

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionEvik JamesView Question on Stackoverflow
Solution 1 - JavascriptjeremyView Answer on Stackoverflow
Solution 2 - JavascriptNaftaliView Answer on Stackoverflow
Solution 3 - JavascriptJoão Pimentel FerreiraView Answer on Stackoverflow
Solution 4 - JavascriptIdanView Answer on Stackoverflow
Solution 5 - JavascriptLiamView Answer on Stackoverflow
Solution 6 - JavascriptHari_pbView Answer on Stackoverflow