为什么Firebug说toFixed()不是函数?

我正在使用jQuery 1.7.2和jQuery UI 1.9.1。 我在滑块内使用下面的代码。 (http://jqueryui.com/slider/)

我有一个函数,应该testing两个值,并根据两个值之间的差异重新格式化(适当的小数位)。 如果差值大于10,我将parsing出整数。 如果差值大于5,则应保留一位小数。 其他的一切,我会保留两位小数。

当我input两个具有十个或更less的差异的值时,我使用toFixed()函数。 而且,在Firebug中,我看到一个错误:

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

有什么简单的,我做错了吗?

这是我的代码:

 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); } } 

toFixed不是一个非数字variablestypes的方法。 换句话说, LowHigh不能被固定,因为当你在Javascript中获得某个值的时候,它自动被设置为一个stringtypes。 使用parseFloat() (或基数为parseInt() ,如果它是一个整数)将允许您将不同的variablestypes转换为数字,这将使toFixed()函数起作用。

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

这是因为Low是一个string。

.toFixed()仅适用于一个数字。


尝试做:

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

Low = parseFloat(Low).toFixed(..); 工作:)了解它的艰辛之路..

Low是一个string。

.toFixed()仅适用于一个数字。

解决这个问题的一个简单的方法是:

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

乘以1强制代码将string转换为数字,不会更改该值。 JSFiddle代码在这里 。