1. ホーム
  2. javascript

[解決済み] FirebugがtoFixed()は関数でないと言うのはなぜですか?

2022-11-06 14:07:07

質問

jQuery 1.7.2、jQuery UI 1.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);
}
}

どのように解決するのですか?

toFixed は、非数値変数型のメソッドではありません。言い換えれば LowHigh は、Javascriptで何かの値を取得すると、自動的に文字列型に設定されるため、修正することができません。使用方法 parseFloat() (または parseInt() で、整数の場合は基数を指定します) を使用すると、異なる変数タイプを数値に変換することができます。 toFixed() 関数が動作するようになります。

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