为什么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的方法。 换句话说, Low
和High
不能被固定,因为当你在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代码在这里 。