2016-05-11 4 views
1

2.083.817のような値があります。 jqueryスクリプトCounterUpを使用すると、おそらく2つの "。"のためにNaNが返されます。セパレータ。jqueryでNaNを与える100万の値CounterUp

値はこれで変換されます。

var nums = []; 
var divisions = $settings.time/$settings.delay; 
var num = $this.text(); 
var isComma = /[0-9]+,[0-9]+/.test(num); 
num = num.replace(/,/g, ''); 
var isInt = /^[0-9]+$/.test(num); 
var isFloat = /^[0-9]+\.[0-9]+$/.test(num); 
var decimalPlaces = isFloat ? (num.split('.')[1] || []).length : 0; 

私はスクリプトが2で値を処理するために得ることができる方法はかなりわかりません「」セパレータ。

+0

カンマで数字を入力できないのはなぜですか?百万円はカンマを使用していないので、基本的にもう1つのドットが浮かんでいるので、Not-A-Numberエラー – moped

+0

は何を表しているのでしょうか? – Karthikeyan

+0

デンマーク語の100万ドルの価値... –

答えて

1

から適応としてソリューションは、ほとんどの時間のためにあなたがつらい時、それを見つけることがありますことを、とても近い..です

for (var i = divisions; i >= 1; i--) { 

     // Preserve as int if input was int 
    var newNum = parseInt(num/divisions * i); 

     // Preserve float if input was float 
     if (isFloat) { 
      newNum = parseFloat(num/divisions * i).toFixed(decimalPlaces).replace(".", ","); 
     } 

        // Preserve commas if input had commas 
        if (isComma) { 
         while (/(\d+)(\d{3})/.test(newNum.toString())) { 
          newNum = newNum.toString().replace(/(\d+)(\d{3})/, '$1' + '.' + '$2'); 
         } 
        } 

        nums.unshift(newNum); 
       } 

Iちょうどそれを逆転させるので、htmlで2,083,817になります。そして、 "、"を "。"に置き換えます。所望の出力を得る。おそらく最も完璧な解決策ではありませんが、機能します。

0

私はもっと簡単な方法があると思うが、あなたはあなたがループ内でこの置換を適用するつもりなら、私はあなたが保存勧め

Number("2.083.817".replace(new RegExp("\\.", 'g'), "")) 

それとも一般的に

Number(number_variable.replace(new RegExp("\\.", 'g'), "")) 

で行くことができますregexを変数に追加します。同様に:

regex_replacement = new RegExp("\\.", 'g') 

for ....... { 
    actual_number = Number(number_variable.replace(regex_replacement, "")) 
} 

PS:javascript replaceAll question

関連する問題