FirebugがtoFixed()は関数ではないと言うのはなぜですか?


93

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);
}
}

私も同じ問題を抱えています。しかし、地元ではその仕事。ライブではエラーが表示されます-TypeError:value.sell_price.toFixedは関数ではありません
MizanurRahman19年

回答:


175

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

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

$記号の後の括弧と引用符を忘れましたね。
Ari Waisberg 2018年

1
@AriWais$SliderValFromは、関数ではなく、OPによって使用される変数名です
jeremy 2018年

@jeremyあなたは正しいです、私は元の投稿に注意を払いませんでした...私はちょうどそのparseFloat($( 'slide')。val())
Ari Waisberg

91

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

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


やってみてください:

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

私のエラーを修正しました、ありがとう。この問題はFirefoxブラウザで直面しました。
shivarajRH 2014

26

Low 文字列です。

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

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

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

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


1
(+ Low).toFixed(..)で1文字を保存:P
フランク


0

関数では、として使用します

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


},
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.