109

jQuery1.7.2とjQueryUI1.9.1を使用しています。スライダー内で以下のコードを使用しています。(http://jqueryui.com/slider/)

2つの値をテストし、2つの値の違いに応じて、それらを(適切な小数点以下の桁数に)再フォーマットする関数があります。差が10より大きい場合は、整数を解析します。差が5より大きい場合は、小数点以下1桁を維持する必要があります。それ以外は、小数点以下2桁を保持します。

差が10以下の2つの値を入力するときは、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);
}
}
4

6 に答える 6

197

toFixed数値以外の変数型のメソッドではありません。つまり、 Javascriptで何かの値を取得するLowHigh、自動的に文字列型に設定されるため、修正できません。を使用するとparseFloat()(またはparseInt()、整数の場合は基数とともに)、さまざまな変数タイプを数値に変換して、toFixed()関数を機能させることができます。

var Low  = parseFloat($SliderValFrom.val()),
    High = parseFloat($SliderValTo.val());
于 2012-12-27T18:13:53.500 に答える
103

それはLow文字列だからです。

.toFixed()数字でのみ機能します。


やってみてください:

Low = parseFloat(Low).toFixed(..);
于 2012-12-27T18:13:52.233 に答える
28

Low文字列です。

.toFixed()数字でのみ機能します。

このような問題を克服する簡単な方法は、型強制を使用することです。

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

1を掛けると、文字列を数値に変換するようにコードが強制され、値は変更されません。

于 2016-11-22T20:47:47.997 に答える
5

数値タイプに変換する必要があります:

(+Low).toFixed(2)
于 2019-10-29T08:55:47.157 に答える
2

parseFloat()NaN空の文字列を返しますが、Number()代わりに関数を使用しないのはなぜですか?

他のタイプの値は、関数を使用して数値に変換できますNumber()

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

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

于 2021-06-01T19:56:26.937 に答える
0

関数では、次のように使用します

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


},
于 2019-01-15T19:22:26.207 に答える