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


93

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

我有一个函数应该测试两个值,并根据两个值之间的差异重新格式化它们(到适当的小数位)。如果差异大于10,我将解析出整数。如果差异大于5,则应保留小数点后一位。其他所有内容,我将保留两位小数。

当我输入两个差值不超过十的值时,将使用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);
}
}

我有同样的问题。但在当地工作。实时显示错误-TypeError:value.sell_price.toFixed不是函数
Mizanur Ra​​hman

Answers:


175

toFixed不是非数字变量类型的方法。换句话说,LowHigh不能固定的,因为当你的在Javascript东西的价值,它会自动设置为一个字符串类型。使用parseFloat()(或parseInt()使用基数(如果是整数))将允许您将不同的变量类型转换为数字,从而使toFixed()函数能够正常工作。

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

您忘记了$号后的括号和引号,对吗?
阿里·威斯堡

1
@AriWais$SliderValFrom是OP使用的变量名,而不是函数
jeremy

@jeremy,您是对的,我没有关注原始帖子……我只是对那些直接寻找解决方案的人说,它的parseFloat($('slide')。val())
Ari Waisberg

91

那是因为Low是一个字符串。

.toFixed() 仅适用于数字。


尝试做:

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

修复了我的错误,谢谢。在firefox浏览器中遇到此问题。
ShivarajRH

26

Low 是一个字符串。

.toFixed() 仅适用于数字。

解决此问题的一种简单方法是使用类型强制

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

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


1
使用(+ Low).toFixed(..)保存一个字符:P
Frank

2

您需要转换为数字类型:

(+Low).toFixed(2)

0

在函数中,用作

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


},
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.