• 締切済み

Javascriptの加工

javascriptによる利益額の計算表を作りたいと思い、javascriptを勉強しています まだ勉強中で自分で0から作るのは難しいので、いろいろ検索して、下の質問のANo.5のサンプルを加工してみようと思いました http://okwave.jp/qa/q6963771.html このサンプルだと、このような表になっています この下にプルダウンで選んだ表が作成されます ▼プルダウン |(1)材料名|(2)一人前当たりの材料数|(3)[入力欄]人前|(4)合計材料数| これに(3)と同じような列を加えた表に加工したいと思っています。 やりたいこととしては、下のような感じです ▼プルダウン |(1)商品名|(2)標準単価|(3)[入力欄A]個|(4)[入力欄B]%|(4)合計材料数(単価×A×B)| もうすこし説明しますと、 プルダウンで家電フロア・AVフロアなどを選択すると、(1)(2)に商品名・商品の価格が表示 (3)に5個のような共通の台数を入れ、 (4)に80と入力して80%の価格で売ると指定 (5)に各商品の標準単価×5個×80% (全品5台限り、80%で売ると各商品の合計金額が表示されるというような感じで) こういったものを作りたいと思い、Javascriptの辞典を片手に加工しようとしているのですが、表が表示されなくなってしまったり、(4)の入力欄が表示されなくなってしまったりと苦戦しています。 どのように加工すればよいのか教えてください><

みんなの回答

回答No.1

かいとうがつきませんね。 そのサンプルのしつもんにかいとうするも、するーされたものです。 まっさらなところから、はじめてみては? (たのひとがかいたこーどを、りかいしにくくて・・・) まず、ぷろぐらむをぶんかつしてかんがえます。 (A) はいれつをていぎする (B) select ようそのあたいに、へんかがあったばあい、もととなるひょうのはいれつをえる (C) はいれつから、ひょうをせいせいする (D) input ようそにへんかがあるかかんしする (E) へんかがあればけいさんする いつものせりふですが、 ぜんかくくうはくははんかくに。 (table のせいせいにかんして、つっこみどころはありますが、ごかんべん。) ふぁいあ~ふぉっくすでしかためしてません。 <!DOCTYPE html> <html lang="ja"> <head>  <title></title>  <meta charset="utf-8">  <style> table {  border : 1px; } td > input, tfoot th {  text-align: right; } td:first-of-type input {  text-align: left; }  </style> </head> <body>  <form action="#">   <p>    <select onchange="B.call(this, event)">     <option value="">?     <option value="kaden">家電フロア     <option value="av">AVフロア    </select>   </p>     <table id="HYOU">    <thead>     <tr><th>商品名<th>標準単価<th>[入力欄A]個<th>[入力欄B]%<th>合計材料数    <thead>    <tfoot>     <tr>      <td colspan="3">&nbsp;      <td><input type="text" value="合計">      <td><input type="text" id="goukei" value="0">    </tfoot>   </table>  </form> <script> var A = {  'kaden' : [   ['洗濯機', 45000, '', '', '' ],   ['冷蔵庫', 56000, '', '', '' ]  ],    'av': [   ['スピーカー', 350, '', '', '' ],   ['鉱石ラジオ', 1580, '', '', '' ]  ] }; var B = function () {  var e = this;  var v = e.value;  var r = v ? A[v]: null;  C (r); }; var C = function (ary) {  if (! ary)   return;    var table = document.getElementById('HYOU');  var tbody = document.createElement ('tbody');  var tr, td, inp;  var i, I, row;  var j, J, col;    for (i = 0, I = ary.length; i < I; i += 1) {   tr = document.createElement ('tr');   row = ary[i];   for (j = 0, J = row.length; j < J; j += 1) {    col = row[j];    td = document.createElement ('td');    inp = document.createElement ('input');    inp.type = 'text';    inp.value = col || '';    td.appendChild (inp);    tr.appendChild (td)   }   tbody.appendChild (tr);  }  if (table.tBodies.length)   table.replaceChild (tbody, table.tBodies[0]);  else   table.appendChild (tbody); }; var D = function (event) {  var e = event./*@cc_on @if(1) srcElement @else@*/ target /*@end@*/;  var table = getP (e, 'id', 'HYOU');  if (table) E(table);  function getP (n,t,v) { return n?(v== n[t])?n:arguments.callee(n.parentNode,t,v):null } }; var E = function (table) {  var i, I;  var total = 0, p;  var cell;  for (i = 1, I = table.rows.length - 1; i < I; i+= 1) {   cell = table.rows[i].cells;   p = V(cell[1]) * V(cell[2]) * V(cell[3]) / 100;   W (cell[4], p);   total += p;  }  document.getElementById('goukei').value = total;    function V (td) { return td.firstChild.value;}  function W (td,v) { td.firstChild.value = v || ''} }; document./*@if(1) attachEvent( 'on'+ @else@*/ addEventListener(/*@end@*/  /*@if(1) 'focusout' @else@*/ 'blur' /*@end@*/, D, true ); </script> </body>

関連するQ&A