• 締切済み

どなたか助けて下さい!!

はじめまして、con999といいます。 javascriptにカンマを入れる方法を教えて頂きたいのです。 実は私はある会社の営業をしているのですが、昔(5年程前)にホームページの制作会社に勤めていたことが有るんですが、それを知っているお得意先のホテルのおえらいさんから、ホームページ上で動く見積書を作ってくれと頼まれたんですが、断ることもできずに 引き受けたんですが・・・ 計算はできるんですが、計算した数値にカンマを入れることができないのです。 頼りにしていた昔の同僚にも色々教えてもらったんですが、わからないんです。 もしよければ、一度このアドレスのjavascriptを見て どうのようにしたら良いかアドバイス頂けませんでしょうか。どうかよろしくお願い致します。 http://hccweb1.bai.ne.jp/~hde15601/keisan/index.html

みんなの回答

  • Ap3
  • ベストアンサー率100% (1/1)
回答No.4

 No.2の者です。前回のは、あまりスマートでなかったので、書き直しました。 //------ function kval(ex1){ if (isNaN(ex1)) return "NaN"; ex1 = (ex1 < 0) ? 0 : Math.floor(ex1); for (var ex2 = ""; 1000 <= ex1; ex1 = Math.floor(ex1 / 1000)){ var ex3 = ex1 % 1000; ex2 = "," + ((ex3 < 100) ? 0 : "") + ((ex3 < 10) ? 0 : "") + ex3 + ex2; } return ex1 + ex2; } //------  金額表示と言うことで、文字列が渡されると"NaN"を返します。 また、負の数はゼロになり、小数点以下は切り捨てです。 関数に渡されるのが自然数と決まっているなら、こういった処理はムダなので、 関数は、いきなりforから始めてしまいましょう。 ========  それから。調べてみると、参考URLにあるような方法もあり、JScriptにすると、 //------ function kval(ex1){ ex1 = ex1.toString(10); var ex2 = /^([-+]?\d+)(\d\d\d)/; while(ex1.match(ex2)) ex1 = ex1.replace(ex2,"$1,$2"); return ex1; } //------ と書けました。やはり、文字列で処理してしまうのがスマートなのかな・・・。

参考URL:
http://www.din.or.jp/~ohzaki/perl.htm#NumberWithComma
con999
質問者

お礼

2回もご解答頂き本当に有り難うございます。 しかも色々調べて下さって本当にすみません。 皆さんに色々アドバイスを頂いてるのにも関わらず、上手くできないので非常に恥ずかしいのですが・・・ また解らないことがあれば補足に書き込ませて頂きますので、よろしくお願い致します。 本当に有り難うございました。

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

シンプルに、文字列編集を行うサンプルを書いてみました。 受け取った数値を文字列化し、下から順に、3文字コピーしたらカンマを入れる、の繰り返しでOKです。 function kval(num) {   var str = "" + num;   var ret = "";   for (var i = 0; i < str.length; i++) {     ret = str.charAt(str.length - 1 - i) + ret;     if ((i % 3 == 2) && (i + 1 < str.length)) { ret = "," + ret; }   }   return ret; } 「3回に1回~」の条件文にもう1つ条件をつけていますが、これは「まだコピーする文字があるなら」というもので、数値の桁数が3の倍数の場合に、頭がカンマで始まる文字列を返してしまうのを防ぎます。

con999
質問者

お礼

アドバイス頂き有り難うございます。 カンマを入れるやり方が色々あってびっくりしました。 丁寧に御説明頂き本当にありがとうございました。

  • Ap3
  • ベストアンサー率100% (1/1)
回答No.2

 面白そうなので、僕も考えてみました。 関数名は、No.1の方と同じとします。 参考までに・・・。 function kval(ex1){ if (isNaN(ex1)) return ex1; var ex2 = ex1; var ex3 = ""; for (ex2 = ex1; 1000 <= ex2; ex2 = (ex2 - ex2 % 1000) / 1000){ var ex4 = ex2 % 1000; var ex5 = (ex4 < 100) ? ",0" : ","; if (ex4 < 10) ex5 += "0"; ex3 = ex5 + ex4 + ex3; } return ex2 + ex3; }

con999
質問者

お礼

お礼が遅くなり申し訳有りませんでした。 アドバイス頂き大変有り難うございました。 教えて頂いた用にやってみます。 また解らなければ、質問させて頂きます。

  • papataku
  • ベストアンサー率18% (11/58)
回答No.1

文字列編集で通貨のカンマを入れるしかないと思います。 正規化表現が使える場合のサンプルを添付しました。 使えない場合は、文字列編集をコーディングでもいいかと思います。 function kval(n) { var result; var str = "" + n; var abc; if(!(abc = str.match(/^([\+-]|)(\d+)(\.\d+|)$/))) return ""; var int_data = abc[2]; var len = int_data.length; var mod = (len - 1) % 3 + 1; result = int_data.substr(0, mod); for(var i = mod; i < len; i += 3) result += "," + int_data.substr(i, 3); result = abc[1] + result + abc[3]; return result; }

con999
質問者

お礼

私が書き込んで直ぐに回答頂き有り難うございました。 まだ解らない所も有りますが、自分で色々やってみます。アドバイス頂き本当に有り難うございました。 また解らないことが有れば質問させて頂きますので、よろしくお願い致します。

関連するQ&A

  • index が0の1行目が計算されない

    お世話になります。 基本的な事もわかっていない超初心者です。 どうか、ご教授下さい。 以下のhtml表はphpで<?php $index = 0; while ( ループ条件 { ?> <input type="button" value="計算" onclick="keisan(<?= $index ?>)" /> <? php$index++;} ?> でできた表ですが、 以下のjavascript でkeisan ( index )が下記のように表が1行しかない場合 javascriptエラーで計算できません。 <script type="text/javascript"> function keisan ( index ) { var formObj = document.tasizan; var aa = parseInt ( formObj.aa[index].value ); var bb = parseInt ( formObj.bb[index].value ); formObj.kaito[index].value = aa + bb;} </script> <form name="tasizan"> <table> <tr><th>A</th><th>B</th><th>回答</th></tr><tr> <td><input type="text" name="aa" size="5" /></td> <td><input type="text" name="bb" size="5" /></td> <td><input type="text" name="kaito" size="10" /> <input type="button" value="計算" onclick="keisan(0)" /></td> </tr></table></form> そこで自分なりに function keisan ( index ) { if(index==0){var formObj = document.tasizan; var aa = parseInt ( formObj.aa.value ); var bb = parseInt ( formObj.bb.value ); formObj.kaito.value = aa + bb;} if(index>1){ var formObj = document.tasizan; var aa = parseInt ( formObj.aa[index].value ); var bb = parseInt ( formObj.bb[index].value ); formObj.kaito[index].value = aa + bb; };} 等、色々考えてみましたがこれでは複数行ある時の1行目が計算されません。 どうしたら複数行ある時にも1行目を計算できるようになるのでしょうか? 具体的に教えて頂けると大変助かります。 どうかご教授の程よろしくお願い致します。

  • ホームページ制作のリニューアル

    カテゴリはここでよいのでしょうか? 現在、会社のホームページの一部のページの情報を 新しくしたい(リニューアルというより一部変更)のですが、 元々の制作会社とは別の会社に依頼することにしました。 この場合、他社が制作したモノをまた別の制作会社が ホームページの一部の変更作業をしてくれるのでしょうか? 著作権の問題があると聞いたのですが・・・ とある制作会社に見積りを依頼したところ、ホームページ全体の リニューアルとして返事が返ってきており、 見積り金額も予想とはケタ違いです。 このようなことにお詳しい方、教えてください!

  • 異なるフォームから呼び出したfunctionの計算をしたい

    以下のようなコードがあります <script type="text/javascript"> <!-- function keisan1(FRM){ // ################ 販売価格欄計算 ############### //コンマを外す txt = 5; // テキストボックスの数 for(i=0; i<txt; i++) { if(FRM.elements[i].value != "") { FRM.elements[i].value = FRM.elements[i].value.replace( /,/g, '');} } //数字かどうかチェック for(i=0; i<txt; i++) { if (FRM.elements[i].value.match(/[\D]/g)){ window.alert("今入力した文字が不正です。半角数字で入力してください。"); return(false); // 計算中止 } } //本体価格欄の計算する txt = 4; // 計算するテキストボックスの数 ttl = FRM.hk5.value*0; for(i=0; i<txt; i++) { if(FRM.elements[i].value != "") { ttl += eval(FRM.elements[i].value);} } FRM.hk5.value = ttl-(FRM.hk2.value*2); //コンマ処理 txt = 5; // コンマをつけるテキストボックスの数 for(i=0; i<txt; i++) { if(FRM.elements[i].value != "") { FRM.elements[i].value = FRM.elements[i].value.replace( /,/g, '').replace( /((?:^[-+])?\d{1,3})(?=(?:\d\d\d)+(?!\d))/g, '$1,');} } }//############## 販売価格計算ここまで ############### こういった感じのものが 4つあります で それぞれの合計額を 最後にたして総合計したいのですが まず それぞれの呼び出しが別々のフォームになっていまして HTMLは <form name="rei1"> onclick="keisan1(this.form)" </form> と言う感じで keisan1から4まで作りました また、HTMLもフォーム名 rei1からrei4まであります 総合計計算をするときに onclick="sougoukei()" として念のため各項目の合計計算(小計を出す感じです)し直してから 各項目をたして総合計にしたいのですが function sougoukei(){ keisan1(); keisan2(); keisan3(); keisan4(); ここから各小計をたして総合計を出す } としたいのですが うまくいきません ( )の中に何か書かないといけないようなんですが this.form でも合計が出ない FRMとうっても  FRM.elements[...]はnullかオブジェクトではないと言う感じのエラー が出ます それぞれの小計計算はうまく動いています。 何をどうしたらうまくいくのかよく分かりません どなたかご教授お願いします よろしくお願いします

  • ホームページ制作会社

    お世話になります。ホームページを制作していただける会社を探しております。いろいろ探してみましたがなかなか気に入った会社が見つかりません。英会話のGABAのようなシンプルで見やすいホームページを制作していただける会社をご存知の方がいらっしゃいましたら、どうか宜しくお願い致します。 GABAホームページ http://www.gaba.co.jp/japanese/top/index.html

  • ホームページ制作について

    ホームページ制作に関しては無知ですので教えて下さい。 会社でホームページをたちあげたくて制作会社にお願いをしようと思っています。 動画を載せようと思っていますがとある会社で見積もりをだして頂いたところ300万円といわれました。 社員の知り合い(先輩後輩の仲)が制作会社の社長さんをやっており 知り合いということで200万までまけてもらいました。 この金額は妥当ですか?? それと、一週間にコンサルタント料が5万円もとられるのですがいったいコンサルタント料とはなんですか? 保守のことですか? よろしくお願い致します。

  • 私は不動産会社にホームページ担当で勤めています。

    私は不動産会社にホームページ担当で勤めています。 自社ホームページは私が更新をしているのですが、PHPやJavaScriptなどの知識がなく お客様用のマイページを自社ホームページにもつけようという話がでているのですが、 マイページだけ制作&管理してくれる会社とかあるんでしょうか?? 私はあくまで“webデザイナー”なんですが、そんな私でもつくることは可能でしょうか?

  • WEB制作における諸経費と制作費

    知人の会社のホームページ制作を依頼されました。 しかし制作に関する技術は一通り持っているのですが、私は仕事として制作するのは初めてで、見積もりで困っています。 知人から「見積書内では制作費、諸経費等に分けて、尚且つ内訳を書いて」と言われました。 しかし私は、ホームページ制作における制作費、諸経費等というものがイマイチわかりません。 また、制作費、諸経費等には具体的に何が含まれているのかも分かりません。 例えば、知人曰く、技術料やコーディング料金は画像加工代1点○○円とか詳細では無く、1ページ画像加工代等を含んで○円という見積もり方で良いとのことですが、提示金額の根拠が欲しいと言っています。 たとえば、1ページ1万円として、その1万円には画像加工代(例えば2000円)や文書作成料などが含まれているのは分かるが、どういう計算の上で1ページ1万円なのか?画像加工代が2000円なのか?を説明して欲しいとのことです。 内訳全てに関して、こういった詳細な説明をして欲しいとのことです。 なお、私が思いつく料金形態といえば、制作費・技術料・人件費・交通費・諸経費程度なのですが、知人が言うには技術料・人件費は制作費に含み、交通費は諸経費に含むらしいです。 制作費・諸経費の相場・内訳、各内訳の相場・算出方法などをご教授願います。 また、万が一、全ての事細かな内訳・算出が不可能な場合はどうすれば良いでしょうか? 私が無知なだけとは思いますが、どなたかご助力願います。

  • ホームページ制作発注について注意事項

     自社ホームページの制作を発注しようと思っております。数件当たって見積もりを出してもらおうと思ってるのですが、製作者、制作会社に対してはどのような要望、資料等を用意していくと交渉がスムーズでしょうか?。希望としては、なるべくシンプルなデザインでフラッシュなどは使わず機能重視で考えておりますが、1ページだけのホームページでは無く、15ページ分くらいのものを考えております。

  • ウェブサイト制作費、運営費

    新規事業でウェブサイトの立ち上げを考えています。 制作費や運営費の試算をしたいのですが、そういったことに詳しいサイトがあったら教えてもらえないでしょうか。サイトではなくても大まかな概算を教えていただけると助かります。 また直接業者に問い合わせる場合、ホームページ製作会社に問い合わせるものなのでしょうか? それとも制作費と運営費は別々に見積もりを取るものなのですか?

  • cgiやphpやjavaなどのお見積もりフォーム

    こんにちは、初めて質問いたします。 現在会社の車屋ホームページを制作しておりますが、何分htmlとcss程の知識しかなく、cgiやjavascriptもフリーのものを少し変更して組み込むくらいしかできません。 作りたいシステムとしては料金の簡易見積もりです。 動きとしては下記URLのような感じです。 http://www.jah.ne.jp/~moro/javascript/form_price.html しかしこれは一つ一つの値に料金が決まっているため計算式に当てはめる事が できるのですが、私のしたい事は下記URLのような事です。少し文章だけでは 説明が難しいので図にしました、ご了承ください。 http://esprit-kobe.com/img/garallies/sample.jpg ■一つ一つの値段は決まっていないが、条件がそろうと値段が出力されるには やはりphpなどのデータベースから読み込ます等としなくてはならないのでしょうか? ■出力箇所を数点出す事は可能なのでしょうか? ■図の「できればしたい事」の様に、1箇所選択する事により、 他の箇所の選択が絞られる事は可能なのでしょうか? できればcgi、php、javascript、ajaxなどのフリーで提供して頂いているものを使って制作したいのですが。(似たようなものでも、フリーでなくても結構です) もしくはそれがなければphpのデータベース等を利用する方法が考えられますので、参考になるURLがあればお教え頂くと助かります。 知識が乏しく申し訳ないのですが、どうぞよろしくお願いいたします。