• ベストアンサー

初めからカンマが付いている数を計算したいのですが。

以下のようにテーブル内の数、A,B,Cを足して、 Dに合計を出したいのですが カンマを付けて表示させる方法がありますでしょうか? <HTML> <script type="text/javascript"> <!-- function goukei() { add=Number(document.all.A.innerText.substring(0,7)) +Number(document.all.B.innerText.substring(0,7)) +Number(document.all.C.innerText.substring(0,7)); document.all.D.innerText=document.all.D.innerText + add; } // --> </script> <BODY onload="goukei()"> <TABLE border="1"> <TR><TH>A</TH><TH ID="A">1,001</TH></TR> <TR><TH>B</TH><TH ID="B">10,010</TH></TR> <TR><TH>C</TH><TH ID="C">100,100</TH></TR> <TR><TH>合計</TH><TH ID="D"><!-- 合計表示 --></TH></TR> </TABLE> </BODY> </HTML>

質問者が選んだベストアンサー

  • ベストアンサー
  • hkd9001
  • ベストアンサー率48% (99/204)
回答No.2

こんばんは。 そう、#1さんのおっしゃる流れでよいと思います。…下のようなコードで、どうですか? 新しく追加した関数「 c_del 」「 c_add 」はそれぞれ、3ケタごとのカンマを除去/追加する機能を持っています。お試しあれ。 <HTML> <script type="text/javascript"> <!-- function goukei() { aa = Number(c_del(document.all("A").innerText)); bb = Number(c_del(document.all("B").innerText)); cc = Number(c_del(document.all("C").innerText)); add = String(aa + bb + cc); document.all("D").innerText = c_add(add); } function c_del(n) { newn = ''; nlen = n.length; for (i=0; i<nlen; i++) { if(n.substr(i,1) != ',') { newn = newn + n.substr(i,1); } } return newn; } function c_add(n) { newn = ''; nlen = n.length; amari = nlen - Math.floor(nlen / 3) * 3; for (i=0; i<nlen; i++) { if((i - Math.floor(i / 3) * 3) == amari && i != 0 ) { newn = newn + ','; } newn = newn + n.substr(i,1); } return newn; } // --> </script> <BODY onload="goukei()"> <TABLE border="1"> <TR><TH>A</TH><TH ID="A">11,001</TH></TR> <TR><TH>B</TH><TH ID="B">10,010</TH></TR> <TR><TH>C</TH><TH ID="C">100,100</TH></TR> <TR><TH>合計</TH><TH ID="D"><!-- 合計表示 --></TH></TR> </TABLE> </BODY> </HTML> なお、なにかご不明の点がございましたら、お気軽にどうぞ!

ljungberg
質問者

お礼

回答ありがとうございます。 おかげさまで解決できました! 新しく追加して頂いた関数についても説明があったので、 分かり易かったです!

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

カンマをとってから足し算して、後からカンマをつけなおす というのが妥当では?

ljungberg
質問者

お礼

回答ありがとうございます。 まさにその通りで、 hkd9001さんのやり方で解決できました。

関連するQ&A

  • jsファイルを使用して計算したいのですが。

    現在以下のようにカンマの取り外しを行い、計算しています。 <HTML> <script type="text/javascript"> <!-- <!-- BODY内の指定した箇所の合計を計算 --> function goukei() { 1 = Number(comma_delete(document.all("1").innerText)); 2 = Number(comma_delete(document.all("2").innerText)); 3 = Number(comma_delete(document.all("3").innerText)); add = String(1 + 2 + 3); document.all("4").innerText = comma_add(add); } <!-- カンマを除去 --> function comma_delete(n) { hairetsu = ''; mojiretsu = n.length; for (i=0; i<mojiretsu; i++){ if(n.substr(i,1) != ','){ hairetsu = hairetsu + n.substr(i,1); } } return hairetsu; } <!-- カンマを挿入 --> function comma_add(n) { hairetsu = ''; mojiretsu = n.length; amari = mojiretsu - Math.floor(mojiretsu / 3) * 3; for (i=0; i<mojiretsu; i++){ if((i - Math.floor(i / 3) * 3) == amari && i != 0){ hairetsu = hairetsu + ','; } hairetsu = hairetsu + n.substr(i,1); } return hairetsu; } // --> </script> <BODY onload="goukei()"> <TABLE border="1"> <TR><TH>A</TH><TD ID="1" align="right">111</TD></TR> <TR><TH>B</TH><TD ID="2" align="right">1,000</TD></TR> <TR><TH>C</TH><TD ID="3" align="right">10,000</TD></TR> <TR><TH>合計</TH><TD ID="4" align="right"><!-- 合計表示 --></TD></TR> </TABLE> </BODY> </HTML> scriptをjsファイルで呼び出して計算したいのですが、 <TR><TH>A</TH><TD ID="1" align="right">111</TD></TR> <TR><TH>B</TH><TD ID="2" align="right">1,000</TD></TR> <TR><TH>C</TH><TD ID="3" align="right">10,000</TD></TR> <TR><TH>D</TH><TD ID="4" align="right">100,000</TD></TR> <TR><TH>E</TH><TD ID="5" align="right">1000,000</TD></TR> <TR><TH>合計</TH><TD ID="6" align="right"> このようにBODYのテーブルの数が変わっても、 一番最後のIDが合計と判断し、 正しく計算出来る方法無いでしょうか? 宜しくお願いします。

  • テーブル内の数値を自動で計算できるようにしたい。

    <TABLE> <TR><TH>A</TH><TH>数字1</TH></TR> <TR><TH>B</TH><TH>数字2</TH></TR> <TR><TH>C</TH><TH>数字3</TH></TR> <TR><TH>D</TH><TH>合計</TH></TR> </TABLE> エディタで「数字1」から「数字3」に数を入力し、 htmlで開いた時に「合計」に足した数を表示させるようにしたいのですが、 良い方法無いでしょうか?

    • ベストアンサー
    • HTML
  • テーブルを壊さない方法を

    知れたいのですが教えてください <table> <tr><th>a</th><th>b</th><th>c</th><th>d</th></tr> <tr><td>A</td><td>B</td><td>C</td><td>D</td></tr> </table> a,b,c,d,A,B,C,Dの部分が少し長いだけでセル内で折り返されてしまいます 折り返されない方法を教えてください

    • ベストアンサー
    • HTML
  • スワップイメージでテキストがブラウザにより変わらない

    java初心者ですが、サイトを参考にマウスオーバーで画像を変更、テキストも変更できるようになったのですが、IE、operaでは、テキストが変わるのですが、firefox、googleでは変わらないことに気が付きました。見よう見まねで組み込みましたので、詳細な理解ができておりません。宜しくお願い致します。 +--------------------------------+ | | | 画像 | | | +--------------------------------+ | テキスト | <=左記(A・B・C)の画像を +----------+----------+----------+ mouseoverで上記の画像 | A | B | C |  とテキストが変わる +----------+----------+----------+ <head> <script type="text/javascript" src="../js/swap_gallery.js"></script> </head> <body> <table> <tr> <td><img src="A.jpg" name="pict" id="pict" /></td> </tr> <tr> <td id="pict_text">説明を表示します</td> </tr> <tr> <td> <table> <tr> <td><img src="A.jpg" name="btn" width="80" height="60" border="0" id="btn" onmouseover="chg_gallery('btn','','A.jpg','pict','','A.jpg',1,'説明A')" onmouseout="" /></td> <td><img src="B.jpg" name="btn" width="80" height="60" border="0" id="btn" onmouseover="chg_gallery('btn','','B.jpg','pict','','B.jpg',1,'説明B')" onmouseout="" /></td> <td><img src="C.jpg" alt="" name="btn" width="80" height="60" border="0" id="btn" onmouseover="chg_gallery('btn','','C.jpg','pict','','C.jpg',1,'説明C')" onmouseout="" /></td> </tr> </table> </td> </tr> </table> </body> function chg_gallery(a, b, c, d, e, f, g, cText){ swapImage(a,b,c,d,e,f,g); changeText(cText); } function swapImage() { var i,j=0,x,a=swapImage.arguments; document.sr=new Array; for(i=0;i<(a.length-2);i+=3) if ((x=findObj(a[i]))!=null){ document.sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2]; } } function findObj(n, d) { var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p); } if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } function changeText(cText) { if (document.all) { document.all["pict_text"].innerText = cText; } }

  • 連想配列から<th>を含むテーブルを作成する関数

    連想配列からテーブル(<th>テーブルヘッダ項目を含む)を作成する関数を作ろうと思っています。 配列と関数をどのように書けばHTMLのソースのようになるでしょうか? 値によって、<td>と<th>を振り分けるようになど良い方法を教えてください。 (1.できれば配列で<td> </td>は省略したいと思います。) (2.<th> </th>の指定場所は下のhtmlのように縦とか横とかにに変えられた方が良いです。) //----- 関数 ----- function table($v) { } //----- 配列 ----- $s = array(); $s[0] = array( 'A-1' , 'B-1' , 'C-1' , 'D-1' , 'E-1' ); $s[1] = array( 'A-2' , 'B-2' , 'C-2' , 'D-2' , 'E-2' ); $s[2] = array( 'A-3' , 'B-3' , 'C-3' , 'D-3' , 'E-3' ); $s[3] = array( 'A-4' , 'B-4' , 'C-4' , 'D-4' , 'E-4' ); $s[4] = array( 'A-5' , 'B-5' , 'C-5' , 'D-5' , 'E-5' ); table($s); //----- 生成されるhtml ----- <table> <tr><th>A-1</th><th>B-1</th><th>C-1</th><th>D-1</th><th>E-1</th></tr> <tr><td>A-2</td><td>B-2</td><td>C-2</td><td>D-2</td><td>E-2</td></tr> <tr><td>A-3</td><td>B-3</td><td>C-3</td><td>D-3</td><td>E-3</td></tr> <tr><td>A-4</td><td>B-4</td><td>C-4</td><td>D-4</td><td>E-4</td></tr> <tr><td>A-5</td><td>B-5</td><td>C-5</td><td>D-5</td><td>E-5</td></tr> </table> <table> <tr><th>A-1</th><td>B-1</td><td>C-1</td><td>D-1</td><td>E-1</td></tr> <tr><th>A-2</th><td>B-2</td><td>C-2</td><td>D-2</td><td>E-2</td></tr> <tr><th>A-3</th><td>B-3</td><td>C-3</td><td>D-3</td><td>E-3</td></tr> <tr><th>A-4</th><td>B-4</td><td>C-4</td><td>D-4</td><td>E-4</td></tr> <tr><th>A-5</th><td>B-5</td><td>C-5</td><td>D-5</td><td>E-5</td></tr> </table> //----- 考え中??の配列 ----- $s = array(); $s[0] = array( '<th>A-1</th>' , '<th>B-1</th>' , '<th>C-1</th>' , '<th>D-1</th>' , '<th>E-1</th>' ); $s[1] = array( 'A-2' , 'B-2' , 'C-2' , 'D-2' , 'E-2' ); $s[2] = array( 'A-3' , 'B-3' , 'C-3' , 'D-3' , 'E-3' ); $s[3] = array( 'A-4' , 'B-4' , 'C-4' , 'D-4' , 'E-4' ); $s[4] = array( 'A-5' , 'B-5' , 'C-5' , 'D-5' , 'E-5' ); table($s); $s = array(); $s[0] = array( 'th' => 'A-1' , 'B-1' , 'C-1' , 'D-1' , 'E-1' ); $s[1] = array( 'th' => 'A-2' , 'B-2' , 'C-2' , 'D-2' , 'E-2' ); $s[2] = array( 'th' => 'A-3' , 'B-3' , 'C-3' , 'D-3' , 'E-3' ); $s[3] = array( 'th' => 'A-4' , 'B-4' , 'C-4' , 'D-4' , 'E-4' ); $s[4] = array( 'th' => 'A-5' , 'B-5' , 'C-5' , 'D-5' , 'E-5' ); table($s); //----- 参考中のソース ----- //-- http://okwave.jp/qa/q8107250.html function table($v) { echo '<table>'; foreach ($v as $t1) { echo '<tr>'; foreach ($t1 as $t2) { echo '<td>' . $t2 . '</td>'; } echo '</tr>'; } echo '</table>'; }

    • ベストアンサー
    • PHP
  • プログラムで、計算結果をセルに表示したい。

    現在JavaScriptで計算プログラムを作っています。どうにかして、プログラムで計算した結果を、HP上のセルに表示させて、コピーをすればエクセルに貼れるように工夫したいのですが、どうしても上手く計算結果がセルに表示させる事が出来ません。 今作ったプログラムはこんな感じです。 <title>表に数値結果を移せるかの実験</title> <body> <form name="sais"> <input type="text" size="11" name="a">+ <input type="text" size="11" name="b"><br> <input type="button" value="表に表示出来るか?" onclick="faifa6"> <table border="1" cellspacing="0" cellpadding="0"> <tr><th width="250">d</th><th width="250">e</th></tr> <tr><th>f</th><th>g</th></tr> </table> </form> <script language="JavaScript"> function.faifa6{ a = document.sais.c.value-0; b = document.sais.c.value-0; d=a+b; document.sais.d.value=d; document.sais.e.value=e; document.sais.f.value=f; document.sais.g.value=g; } </script> </body> とりあえず今は、a+bの結果を、セルのdの部分に数値が出るようにプログラミングがしたいのです。 他のe,f,g,等は、後で応用すれば良いだけだと考えています。 セルのプログラムには<table>というのを使っているようですが、この中に単にdという文字を入力しても、この場合は単なる文字として認識されるので、数値が表示されないのでしょうか?。 プログラムは始めたばかりなので、どうか計算結果をセルの部分に表示させる技術を知っている方がいらっしゃったら、是非とも知識をご教授下さい!。 よろしくお願いします。

  • HTMLで外部ファイルの読み込み

    HTMLの表が存在するときに、その表の中に入る文字列を 別のファイル(テキストやHTML)で外部から読み込んで表示する方法について教えてください。まったくの素人です。。。 <html> <table border="1"> <tr> <th>A</th><th>B</th><th>C</th><th>D</th><th>E</th> </tr> </thead> ーーーーーーこの中が外部ファイルの記述ーーーーーーー <tr> <td>AAAAAAA</td> <td>BBBBBBB</td> <td>CCCCCCC</td> <td>DDDDDDD</td> <td>EEEEEEE</td> </tr> <tr> <td>A'A'A'A'A'</td> <td>B'B'B'B'B'</td> <td>C'C'C'C'C'</td> <td>D'D'D'D'D'</td> <td>E'E'E'E'E'</td> </tr> ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー </table> </body> </html>

  • 表の中の列の順番を入れ替える場合の表示方法

    HTMLが不慣れで質問が伝わらないかも知れませんが表の表現についてわかる方は教えてください。 例えば、ある表が存在する場合にB列とD列を入れ替えると中身の文字列もそれにしたがって列が入れ替わる表示方法について教えてください。 実際のサンプルHTMLだとこんな感じです↓ <html> <table border="1"> <tr> <th>A</th><th>B</th><th>C</th><th>D</th><th>E</th> </tr> </thead> <tr> <td>AAAAAAA</td> <td>BBBBBBB</td> <td>CCCCCCC</td> <td>DDDDDDD</td> <td>EEEEEEE</td> </tr> <tr> <td>A'A'A'A'A'</td> <td>B'B'B'B'B'</td> <td>C'C'C'C'C'</td> <td>D'D'D'D'D'</td> <td>E'E'E'E'E'</td> </tr> </table> </body> </html>

  • テキストの再表示

    初めまして。 JavaScriptでのことで質問させていただきます。 ボタンと押された後に、HTMLのテーブル内のテキストの番号を再度振りなおしたいと思っています。 <table id="html">  <tr>   <td colspan="2">項目aaa</td>  </tr>  <tr>   <td id="list">NO.1</td>   <td>あああああ</td>  </tr>  <tr>   <td colspan="2">項目bbb</td>  </tr>  <tr>   <td id="list">NO.3</td>   <td>ううううう</td>  </tr>  <tr>   <td id="list">NO.4</td>   <td>えええええ</td>  </tr>  <tr>   <td colspan="2">項目eee</td>  </tr>  <tr>   <td id="list">NO.5</td>   <td>おおおおお</td>  </tr>  <tr>   <td id="list">NO.6</td>   <td>かかかかか</td>  </tr>  <tr>   <td id="list">NO.7</td>   <td>ききききき</td>  </tr> </table> というようなテーブルがあって、ボタンを押すとテーブル内に1行追加されるのですが、その際「NO.」を振りなおしたいのですがどのようにすればよいでしょうか? function insertItem() {  var nCount = 0;  for (nLoop = 0; nLoop < document.all.html.rows.length; nLoop++) {   for (nCellLoop = 0; nCellLoop < document.all.html.rows(nLoop).cells.length; nCellLoop++) {    document.all.html.rows(nLoop).cells(nCellLoop).innerText = "NO." + nCount;    nCount++;   }  } } サイトを参考にし、上記のようなものはできたのですが実行すると すべてのセルが変更されてしまい、「項目aaa」や「あああああ」も 変更されてしまいます。 何かいい方法はありますでしょうか? よろしくお願いいたします。

  • テキストの再表示

    初めまして。 JavaScriptでのことで質問させていただきます。 ボタンと押された後に、HTMLのテーブル内のテキストの番号を再度振りなおしたいと思っています。 <table id="html">  <tr>   <td colspan="2">項目aaa</td>  </tr>  <tr>   <td id="list">NO.1</td>   <td>あああああ</td>  </tr>  <tr>   <td colspan="2">項目bbb</td>  </tr>  <tr>   <td id="list">NO.3</td>   <td>ううううう</td>  </tr>  <tr>   <td id="list">NO.4</td>   <td>えええええ</td>  </tr>  <tr>   <td colspan="2">項目eee</td>  </tr>  <tr>   <td id="list">NO.5</td>   <td>おおおおお</td>  </tr>  <tr>   <td id="list">NO.6</td>   <td>かかかかか</td>  </tr>  <tr>   <td id="list">NO.7</td>   <td>ききききき</td>  </tr> </table> というようなテーブルがあって、ボタンを押すとテーブル内に1行追加されるのですが、その際「NO.」を振りなおしたいのですがどのようにすればよいでしょうか? function insertItem() {  var nCount = 0;  for (nLoop = 0; nLoop < document.all.html.rows.length; nLoop++) {   for (nCellLoop = 0; nCellLoop < document.all.html.rows(nLoop).cells.length; nCellLoop++) {    document.all.html.rows(nLoop).cells(nCellLoop).innerText = "NO." + nCount;    nCount++;   }  } } サイトを参考にし、上記のようなものはできたのですが実行すると すべてのセルが変更されてしまい、「項目aaa」や「あああああ」も 変更されてしまいます。 何かいい方法はありますでしょうか? よろしくお願いいたします。

専門家に質問してみよう