1. ホーム
  2. javascript

[解決済み] jQueryで数値にカンマを追加する

2023-05-02 12:44:16

質問

次のような数値があります。

10999 そして 8094 そして 456

そして、私がしたいことは、必要であれば正しい場所にカンマを追加することです。

10,999 そして 8,094 そして 456

これらはすべて、次のようなpタグの中に入っています。 <p class="points">10999</p> などです。

できるのでしょうか?

他の投稿の助けを借りて、ここで試してみました。 http://jsfiddle.net/pdWTU/1/ が、うまくいかないようです。

ありがとうございます。

ジェイミー

アップデイト

少しいじくりまわして、なんとかここで解決しました。 http://jsfiddle.net/W5jwY/1/

新しい Globalization プラグインを見て、より良い方法を探すつもりです。

ありがとうございます。

ジェイミー

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

すべてのブラウザで動作する、これだけでいい。

  function commaSeparateNumber(val){
    while (/(\d+)(\d{3})/.test(val.toString())){
      val = val.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2');
    }
    return val;
  }

正規表現のおかげでコンパクトに、そして要領よく書けるように書きました。これはストレートなJSですが、あなたのjQueryでこのように使用することができます。

$('#elementID').html(commaSeparateNumber(1234567890));

または

$('#inputID').val(commaSeparateNumber(1234567890));

しかし、よりクリーンで柔軟性のあるものが必要な場合は、次のようにします。以下のコードは小数点を正しく修正し、先頭のゼロを削除し、無制限に使用することができます。コメントで@baackeに感謝します。

  function commaSeparateNumber(val){
   val = val.toString().replace(/,/g, ''); //remove existing commas first
   var valRZ = val.replace(/^0+/, ''); //remove leading zeros, optional
   var valSplit = valRZ.split('.'); //then separate decimals
    
   while (/(\d+)(\d{3})/.test(valSplit[0].toString())){
    valSplit[0] = valSplit[0].toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2');
   }

   if(valSplit.length == 2){ //if there were decimals
    val = valSplit[0] + "." + valSplit[1]; //add decimals back
   }else{
    val = valSplit[0]; }

   return val;
  }

そして、jQueryでは、このように使用します。

$('.your-element').each(function(){
  $(this).html(commaSeparateNumber($(this).html()));
});

ここで jsFiddle .