- ベストアンサー
カンマの付け方
- ファンクションの中で記述した数式の結果に三桁区切りでカンマをつける方法を教えてください。
- 計算結果を出した後に逆にカンマをつけて表示する方法はありますか?
- カンマ編集のメソッドを使用して表示しようとするとエラーになります。どうすればよいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
function addComma(v){ var re = /(-?\d+)(\d{3})/; v=v.toString(); while(re.test(v)){ v = v.replace(re, "$1,$2"); } return v; }
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#2>ちなみに下記の関数を使う必要があるんですが、これをそのまま同じ要領で使っても結果は出るのでしょうか? #2補の関数の場合、引数は文字列である必要があります。 なので、""+Comma か、Comma.toString() してやる必要があります。 あと、小数がある場合に対応していないです。 その他は、同様の結果になると思います。
補足
ありがとうございます。 早速、やってみますね。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
#1>表示しているデータ全てに反映されるようにするには、どうしたらいいですか? 勘違いしてたらゴメンですが、 フィールド.value = addComma(フィールド.value); のように必要なフィールド全てに適用します。 あと、 #1>lstArariYosan[i].value = addComma(Comma.toString()); ですが、 #1 のaddComma の場合、関数の内部でtoString( ) をしているので呼び出す側で引数をtoString( )してやる必要はありません。(やっても良いですが・)
補足
ありがとうございます。 ちなみに下記の関数を使う必要があるんですが、 これをそのまま同じ要領で使っても結果は出るのでしょうか? BLUEPIXYさんの書いてくださったコードと 書き方が違うので気になりました。 function addComma(su) { var ret=""; var fugou=""; if(su.length>0 && su.substring(0, 1) == "-") { ret = su.substring(1, su.length); fugou = "-"; } else { ret = su; } if(ret.length>3){ for(i=3;i<ret.length;i+=4){ var moji=ret.substring(0,ret.length-i)+','+ret.substring(ret.length-i,ret.length); ret = moji; } } return (fugou + ret); }
補足
カンマは出るようになりましたが、 テキストボックスで変更をかけた部分だけが カンマ付きで更新されます。 表示しているデータ全てに反映されるようにするには、 どうしたらいいですか? function changeArariritsu() { var lstUriageYosan = document.form.elements("_uriageYosan"); var lstArariRitu = document.form.elements("_arariritsu"); var lstArariYosan = document.form.elements("_arariYosan"); if(lstArariRitu.length == null){ lstArariYosan.value = Math.floor(lstUriageYosan.value.replace(",","") * lstArariRitu.value); if(isNaN(lstArariYosan.value)){ lstArariYosan.value = 0; } }else{ for(i = 0 ; lstUriageYosan.length > i ; i ++ ){ Comma = Math.floor(lstUriageYosan[i].value.replace(",","") * lstArariRitu[i].value); if(isNaN(Comma)){ lstArariYosan[i].value = 0; } lstArariYosan[i].value = addComma(Comma.toString()); } } }