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

2022-08-30 05:41:00

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

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

当我输入两个差值为 10 或更小的值时,我使用 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);
}
}

答案 1

toFixed不是非数值变量类型的方法。换句话说,并且无法修复,因为当您在Javascript中获取某些内容的值时,它会自动设置为字符串类型。使用(或使用基数,如果它是整数)将允许您将不同的变量类型转换为数字,这将使函数能够工作。LowHighparseFloat()parseInt()toFixed()

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

答案 2

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

.toFixed()只适用于数字。


尝试做:

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