JavaScriptを使用して二の表の値を計算する方法について

このQ&Aのポイント
  • JavaScriptを使用してテーブルabcのリンゴ、なす、西瓜の数値をテーブルefgの元値に対して計算し、その売値を求める方法について教えてください。
  • テーブルabcとテーブルefgの値は可変するため、効率的でシンプルなJavaScriptコードを教えていただけると嬉しいです。
  • ご教授いただけると幸いです。
回答を見る
  • ベストアンサー

二の表の値の計算をしたい。

いつもお世話になります。 見よう見まねでやっている超初心者です。 下の様なテーブルが二つあるページで テーブルabcの<td>のリンゴ、なす、西瓜の数値を テーブルefgのリンゴ、なす、西瓜の元値の値に 対して+-してその売値の数値を を自動で計算して求めたいと思っています。 <td>?</td>(()内の回答のように) 表の値はどちらも可変します。 jabascriptでなるべくシンプルで簡単にできないでしょうか? ご教授の程、どうぞよろしくお願い致します。 <table id="abc"> <tr> <th>リンゴ</th> <th>なす</th> <th>西瓜</th> </tr> <tr> <td>-20</td> <td>-10</td> <td>+200</td> </tr> </table> <table id="efg"> <tr> <th >ID</th> <th>果物</th> <th>元値</th> <th>売値</th> </tr> <tr> <td>1</td> <td>リンゴ</td> <td>140</td> <td>?(120)</td> </tr> <tr> <td>2</td> <td>リンゴ</td> <td>120</td> <td>?(100)</td> </tr> <tr> <td>3</td> <td>なす</td> <td>40</td> <td>?(30)</td> </tr> <tr> <td>4</td> <td>なす</td> <td>80</td> <td>?(70)</td> </tr> <tr> <td>5</td> <td>すいか</td> <td>800</td> <td>?(1000)</td> </tr> <tr> <td>6</td> <td>すいか</td> <td>1000</td> <td>?(1200)</td> </tr> </table>

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

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

たとえばこんな感じ <script> window.onload=function(){ var t1=document.getElementById("abc"); var vals=new Object(); for(var i=0;i<t1.rows[0].cells.length;i++){ vals[t1.rows[0].cells[i].innerHTML]=parseInt(t1.rows[1].cells[i].innerHTML); } var t2=document.getElementById("efg"); for(var i=1;i<t2.rows.length;i++){ for(var j in vals){ if(j==t2.rows[i].cells[1].innerHTML){ var v=parseInt(t2.rows[i].cells[2].innerHTML); t2.rows[i].cells[3].innerHTML=v + vals[j]; break; } } } } </script> <table id="abc"> <tr> <th>リンゴ</th> <th>なす</th> <th>西瓜</th> </tr> <tr> <td>-20</td> <td>-10</td> <td>+200</td> </tr> </table> <table id="efg"> <tr> <th >ID</th> <th>果物</th> <th>元値</th> <th>売値</th> </tr> <tr> <td>1</td> <td>リンゴ</td> <td>140</td> <td></td> </tr> <tr> <td>2</td> <td>リンゴ</td> <td>120</td> <td></td> </tr> <tr> <td>3</td> <td>なす</td> <td>40</td> <td></td> </tr> <tr> <td>4</td> <td>なす</td> <td>80</td> <td></td> </tr> <tr> <td>5</td> <td>西瓜</td> <td>800</td> <td></td> </tr> <tr> <td>6</td> <td>西瓜</td> <td>1000</td> <td></td> </tr> </table>

tansansooda
質問者

お礼

早速のご回答ありがとうございます。 思う通りに出来ました!素晴らしいです。 全て教えて頂き、本当に感謝致します。 列の位置等を変えて使わせて頂きました。 本当にありがとうございます。又何かありましたら 是非よろしくお願い致します。

関連するQ&A

  • idをつけてるtdタグの値をjQueryで

    初めて質問させていただきます。 下記のようなテーブルがあった場合、<td id="ID">1234</td>の「1234」をjQueryで取得したいのですが、うまくいきません。 ご教授お願いいたします。 テーブルの例 <table id="nameTable"> <thead> <tr> <th>aaa</th> </tr> <tr> <td id="ID">1234</td> </tr> </thead> </table> 記述したjQuery $('table.nameTable td.ID').text();

  • CSV形式の表の内容をHTMLファイルのTABLEに表示する方法は?

    どうしてもわからず困っています。どなたかおわかりの方がいらっしゃいましたら、是非お教えください。 ●CSVファイル(data.csv)の内容が下記の場合、 品番,商品名,価格 0001,りんご,100 0002,いちご,150 0003,すいか,200 ●HTMLファイル(index.html)に以下のように表示したいです。 <table> <tr><th>品番</th><th>商品名</th><th>価格</th></tr> <tr><td>0001</td><td>りんご</td><td>100</td></tr> <tr><td>0002</td><td>いちご</td><td>150</td></tr> <tr><td>0003</td><td>すいか</td><td>200</td></tr> </table> データバインドという方法もあるようなのですが、IE以外のブラウザでは表示できないみたいなのです。 できれば、IE,Firefox,サファリの最新版での表示ができればと思いますので、それ以外の方法(php,xmlなど?)でできればと思います。 わかりづらい説明で申し訳ないです。 宜しくお願い致します。

  • 表の合計値

    どこかのサイトでcsvファイルを読み込み、行末に合計値を表示するサンプルを見たことはあるのですが、下記のようなことは可能でしょうか。 #単にテーブルに表示されている数値の合計値を、行末に表示する。csvファイルは使わないで、テーブルから値を取得して合計を★に表示する。 <TABLE BORDER="1"> <TR><TD>りんご</TD><TD>80</TD></TR> <TR><TD>みかん</TD><TD>35</TD></TR> <TR><TD>合計</TD><TD>★</TD></TR> </TABLE>

  • 罫表のセル結合

    AJAXの勉強をしています。 Htmlに表示されている罫表の選んだセルをセル結合するような処理を 作りたいのですが、可能でしょうか。 DOMを使用してセルの削除等は出来たのですが、セル結合を行う事が出来ないのです。 function joinSpan( ) { // 出力先のトップ要素となるtable要素 var table = document.getElementById("result"); //とりあえずセル削除してみる。 var child = table.childNodes; var child2 = child[0].childNodes;  child[0].removeChild(child2[1]); } ↓対象となるテーブル <table id="result"> <thead><tr><th>1</th><th>2</th><th>3</th><th>4</th></tr></thead> <tbody > <tr><td>あ</td><td>う</td><td>え</td><td>お</td></tr> <tr><td>お</td><td>か</td><td>き</td><td>く</td></tr> <tr><td>け</td><td>こ</td><td>さ</td><td>し</td></tr> <tr><td>す</td><td>せ</td><td>そ</td><td>な</td></tr> </tbody> </table> 何か良い方法がありましたら、教えて頂ければと思います。

  • 長い表を印刷する場合に(修正版)

    keyguy 切りの悪いところで切られて改ページされてしまいます 例えば <head><style type="text/css"><!-- table{border-collapse:collapse;} td{border:solid 1px black;} th{border-collapse:collapse;} --></style></head> <table> <caption align=left> <nobr>あいうえおかきくけこ<nobr/> </caption> ... <tr ><td colspan=3>abc</td></tr> <tr ><td>A</td><td>B</td><td>C</td></tr> <tr ><td>A</td><td>B</td><td>C</td></tr> <tr ><th colspan=3 height=9></th></tr> ... </table> のように <tr ><td colspan=3>abc</td></tr> <tr ><td>A</td><td>B</td><td>C</td></tr> <tr ><td>A</td><td>B</td><td>C</td></tr> <tr ><th colspan=3 height=9></th></tr> が繰り返しているときにこの単位ユニットの間で改ページされてしまうのです これを回避することは不可能でしょうか?

    • ベストアンサー
    • HTML
  • 複数のレコードをimplodeでまとめる方法

    ほんと度々すいません…。 http://oshiete1.goo.ne.jp/qa3574682.htmlで一度解決したのですが、私の質問の仕方が悪く、結局実用できなかったので再度質問させてください。 上記URLでやったことに、更にフィールドが増えた場合の記述方法についてです。 table1 【ID|field1】 [1|AAA] [1|BBB] [2|CCC] [3|DDD] [3|EEE] [3|FFF] table2 【ID|field2】 [1|ooo] [2|ppp] [2|qqq] [2|rrr] [3|sss] [3|ttt] ↑構造が同じだけど内容が違うテーブルが5つあります(table1~table5まで)。そしてこれらのテーブルをクエリでは↓ <table> <tr><th>ID</th>   <th>field1</th>   <th>field2</th>   <th>field3</th>   <th>field4</th>   <th>field5</th></tr> <tr><td>1</td>   <td>AAA<br>BBB</td>   <td>ooo</td>   ・・・</tr> <tr><td>2</td>   <td>CCC</td>   <td>ppp<br>qqq<br>rrr</td>   ・・・</tr> <tr><td>3</td>   <td>DDD<br>EEE<br>FFF</td>   <td>sss<br>ttt</td>   ・・・</tr> </table> というように表示するのが理想です。 一応自分で考えましたが、できなかったので…お願いします。 ============================== 一応、前回http://oshiete1.goo.ne.jp/qa3574682.htmlにて頂いた回答をまとめたコードが↓です。 (table1のみの場合だとこうなります)→mr_araki様に感謝しております。 $query = mysql_query($sql); $rows = array(); while ($row = mysql_fetch_assoc($query)) {   if (!isset($rows[$row[ID]])) {      $rows[$row[ID]] = array();   }   $rows[$row[ID]][] = $row[field1]; } echo "<table>\n"; echo "<tr><th>ID</th><th>field1</th></tr>\n"; foreach ($rows as $id => $row) {   echo "<tr><td>" .$id. "</td><td>" .implode('<br>', $row). "</td></tr>\n"; } echo "</table>";

    • ベストアンサー
    • PHP
  • クリックされた罫表セルの行番号、列番号を取得するには

    クリックされた罫表セルの行番号、列番号を取得する事は出来るのでしょうか。 例えば 下記Tableの"き"という文字が入ったセルをクリックすると 列番号:2 行番号:3 という番号を取得したいのです。 <table> <thead><tr><th>1</th><th>2</th><th>3</th><th>4</th></tr></thead> <tbody> <tr td>あ</td><td>い</td><td>う</td><td>え</td></tr> <tr><td>お</td><td>か</td><td>き</td><td>く</td></tr> <tr><td>け</td><td>こ</td><td>さ</td><td>し</td></tr> <tr><td>す</td><td>せ</td><td>そ</td><td>な</td></tr> </tbody> </table> onclickでidのついた所をクリックした時のアクションは取得できましたが、Csvなどからデータを取得したtableのセルをクリックした時の 列数、行数を取得する事は可能でしょうか。 宜しくお願いします。

  • JS 簡単なコードで表を転置できますか?

    JavaScript 簡単なコードで表を転置できますか? ここに1つのテーブルがあります。 これを簡単なコードで 転置できますか? ここにいう転置とは、 表のセルについて、(m×n行列) => (n×m行列) に変換することです。 <仕様> ・テーブルの列と行を入れ替える ・文字は横書きのままで変更なし ・Vanilla JS で ( jQuery 無用 ) ・チェックボックスでトグル <div><input type="checkbox" id="menu">転置</div> <div class="container"> <table id="table2" border="1"> <caption>世界の高い山 トップ10</caption> <thead> <tr><th>順位</th><th>山の名称</th><th>標高 (m)</th></tr> </thead> <tbody> <tr><td> 1位</td><td>エベレスト</td><td>8,848</td></tr> <tr><td> 2位</td><td>K2</td><td>8,611</td></tr> <tr><td> 3位</td><td>カンチェンジュンガ</td><td>8,586</td></tr> <tr><td> 4位</td><td>ローツェ</td><td>8,516</td></tr> <tr><td> 5位</td><td>マカルー</td><td>8,485</td></tr> <tr><td> 6位</td><td>チョ・オユー</td><td>8,201</td></tr> <tr><td> 7位</td><td>ダウラギリ</td><td>8,167</td></tr> <tr><td> 8位</td><td>マナスル</td><td>8,163</td></tr> <tr><td> 9位</td><td>ナンガ・パルバット</td><td>8,126</td></tr> <tr><td>10位</td><td>アンナプルナ</td><td>8,091</td></tr> </tbody> </table> </div>

  • HTMLを使って表を作成しているのですが、枠線がキレイに揃いません。

    HTMLを使って表を作成しているのですが、枠線がキレイに揃いません。 下のソースで50と130のとこをきちんとエクセルのように枠線揃えたいのですが、 どのようにしたら良いのでしょうか? よろしくお願いします。 <HTML> <BODY> <TABLE border=1><TR> <TH width="50"></TH> <TH width="135"></TH> <TH width="65"></th> <TH width="65"></th> <TH width="65"></th> </TR><TR> <TD colspan="5"> <TABLE border=1><TR> <TD width=50>50</TD> <TD width=200>200</TD> <TD width=130>130</TD> </TR><TR> <TD width=50>50</TD> <TD width=200>200</TD> <TD width=130>130</TD> </TR></TABLE> </TD> </TR><TR> <TD colspan="5"> <TABLE border=1><TR> <TD width=50 rowSpan=2>50</TD> <TD width=135 rowSpan=2>135</TD> <TD width=65 rowSpan=2>65</TD> <TD width=130 colSpan=2>130</TD> </TR><TR> <TD width=65>65</TD> <TD width=65>65</TD> </TR><TR> <TD width=50>50</TD> <TD width=135>135</TD> <TD width=65>65</TD> <TD width=65>65</TD> <TD width=65>65</TD> </TR><TR> <TD width=250 colSpan=3>250</TD> <TD width=65>65</TD> <TD width=65>65</TD> </TR></TABLE> </TD> </TR><TR> <TD colspan="5"> <TABLE border=1><TR> <TD width=250>250</TD> <TD width=130>130</TD> </TR></TABLE> </TD> </TR> </TABLE> </BODY> </HTML>

    • ベストアンサー
    • HTML
  • WEB上の表でソートするためのJavaScript

    WEB上の表でソートするためのJavaScript 下記のHTMLのソースではTableを用いた表を作成していますが、 番号、名前、クラス、クラブの項目をWEB上でソートできる JavaScriptを教えて欲しいのです。 下記ソースの表では、番号順に並べていますが、名前順や、クラス順、 クラブ順に並べ変えたいのです。 ただ、これが表示は1列ではなくの3列に分けて表示したいのです。 3列でそれぞれソートするのではなく、3つの列を1つの連続した列 としてソートしたいのです。 ですから、ソートを実行するためのボタンは、各列には必要なく、左端の列の 各項目をボタンにできればと思っています。 どうぞよろしくお願い致します。 <table border="3"> <TR> <TD> <TABLE border="1" > <TR> <Th>番号</Th><Th>名前</Th><Th>クラス</Th><Th>クラブ</Th> </TR> <TR> <TD>1</TD><TD>ヤマダ</TD><TD>A</TD><TD>水泳</TD> </TR> <TR> <TD>2</TD><TD>タナカ</TD><TD>C</TD><TD>野球</TD> </TR> <TR> <TD>3</TD><TD>サトウ</TD><TD>E</TD><TD>水泳</TD> </TR> <TR> <TD>4</TD><TD>スズキ</TD><TD>D</TD><TD>茶道</TD> </TR> </TABLE> </TD> <TD> <TABLE border="1" > <TR> <Th>番号</Th><Th>名前</Th><Th>クラス</Th><Th>クラブ</Th> </TR> <TR> <TD>5</TD><TD>ワタナベ</TD><TD>B</TD><TD>バレー</TD> </TR> <TR> <TD>6</TD><TD>イトウ</TD><TD>C</TD><TD>水泳</TD> </TR> <TR> <TD>7</TD><TD>キムラ</TD><TD>A</TD><TD>柔道</TD> </TR> <TR> <TD>8</TD><TD>イシダ</TD><TD>B</TD><TD>卓球</TD> </TR> </TABLE> </TD> <TD> <TABLE border="1" > <TR> <Th>番号</Th><Th>名前</Th><Th>クラス</Th><Th>クラブ</Th> </TR> <TR> <TD>9</TD><TD>ワダ</TD><TD>C</TD><TD>卓球</TD> </TR> <TR> <TD>10</TD><TD>タダ</TD><TD>D</TD><TD>柔道</TD> </TR> <TR> <TD>11</TD><TD>ミキ</TD><TD>E</TD><TD>野球</TD> </TR> <TR> <TD>12</TD><TD>ハナダ</TD><TD>A</TD><TD>水泳</TD> </TR> </TABLE> </TD> </TR> </table>